0

对我来说 QuickDialog 的一个关键区别是单个 .m 文件 (settingsFormBuilder.m) 可以在一个根目录下携带导航控制器中多个视图的所有代码,因此它似乎链接到一个视图控制器 (settingsViewController .m)。

我的问题是,当我单击 tableviewcell 时,底层视图将被推送,而 settingsViewController.m 中的 viewWillAppear 将被击中。我不想在此 viewWillAppear 方法中插入 if 语句来查看是否正在推送特定的 rootElement 而不是另一个。

如何创建一个 if 语句来确定我的“userAccessRoot”是否正在加载到 viewWillAppear 中,而不是说我的“deviceConfigRoot”?

例如,我需要这样的东西,但找不到可以做到的代码组合

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

提前致谢

4

1 回答 1

0

我想出了如何解决这个问题,更多的是我对 quickDialog 的工作原理缺乏了解。万一其他人遇到这个问题,这就是要做的。

关键是如何设置 QRootElement 的控制器名称。对于我所有的 QRootElements,我的 controllerName 都引用了同一个 .m 文件。例如:

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

出于某种原因,我认为它必须是这种方式,因为示例项目似乎是以类似的方式设置的。我只需要创建一个新类,它是 QuickDialogController 的子类,并将 controllerName 指向它。现在,当加载 QRootElement 时,一切都通过创建的 .m 文件进行操作,即“UserSettingsViewController”。因此,只要您像往常一样仅将一个 QRootElement 链接到一个 .m 文件,就无需尝试找出启动 viewWillAppear 的根。请参阅下面的示例,了解我的 QRootElements 现在如何具有不同的控制器名称

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

于 2014-07-21T22:26:25.303 回答