检测QuickDialog中将显示哪个根元素

时间:2014-07-20 00:03:49

标签: viewwillappear quickdialog

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

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

如何创建if语句以确定我的用户访问权限是否为'正在加载viewWillAppear,而不是说我的' deviceConfigRoot'?

例如,我需要这样的东西,但却无法找到能够做到这一点的代码组合

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

提前致谢

1 个答案:

答案 0 :(得分:0)

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

关键是如何设置QRootElement的controllerName。对于我的所有QRootElements,我让controllerName引用相同的.m文件。例如:

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

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

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