Определите, какой корневой элемент появится в QuickDialog

Для меня ключевое отличие QuickDialog заключается в том, что один файл .m (settingsFormBuilder.m) может содержать весь код для нескольких представлений в контроллере навигации под одним корнем, поэтому он, похоже, связан с одним контроллером представления (settingsViewController). м).

Моя проблема заключается в том, что когда я нажимаю на tableviewcell, базовое представление будет нажато, а viewWillAppear в settingsViewController.m будет поражен. Я не хочу вставлять оператор if в этот метод viewWillAppear, чтобы увидеть, нажимается ли конкретный rootElement, а не другой.

Как я могу создать оператор if, чтобы определить, загружается ли мой «userAccessRoot» в viewWillAppear, а не мой «deviceConfigRoot»?

Например, мне нужно что-то подобное, но я просто не могу найти комбинацию кода, которая это сделает.

- (void)viewWillAppear:(BOOL)animated {
       if ([self.root.activeRoot.key isEqualToString:"userAccessRoot"]) {
           //Do something
       }
       else {
       }
 }

заранее спасибо


person msec    schedule 20.07.2014    source источник


Ответы (1)


Я понял, как решить проблему, это было скорее отсутствие моего понимания того, как работает quickDialog. Если кто-то еще столкнется с этой проблемой, вот что нужно делать.

Ключ в том, как вы устанавливаете имя контроллера вашего QRootElement. Для всех моих QRootElements у меня было имя контроллера, ссылающееся на один и тот же файл .m. Например:

userListRoot.controllerName = @"SettingsViewController"; userAccessRoot.controllerName = @"SettingsViewController";

По какой-то причине я подумал, что так и должно быть, поскольку пример проекта, похоже, был настроен аналогичным образом. Мне просто нужно было создать новый класс, который был бы подклассом QuickDialogController, и указать на него имя контроллера. Теперь, когда этот QRootElement загружается, все работает через созданный файл .m, являющийся «UserSettingsViewController». Поэтому не нужно пытаться выяснить, какой корень инициирует представлениеWillAppear, пока вы связываете только один QRootElement с одним файлом .m, как обычно. Ниже приведен пример того, как мои QRootElements теперь имеют разные имена контроллеров.

userListRoot.controllerName = @"SettingsViewController"; userAccessRoot.controllerName = @"UserSettingsViewController";

person msec    schedule 21.07.2014