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 {
}
}
提前致谢
答案 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";