【发布时间】:2014-10-04 14:52:02
【问题描述】:
我今天早些时候发布了question,关于对收到推送通知的反应,据此我需要从一个视图向下钻取到另一个视图。这个问题得到了回答,但是我现在已经转移到对推送通知做出反应的另一个要求,我需要深入到导航堆栈中的第三级。
下面是我的视图层次结构的模型,在收到推送通知后,我想深入查看视图标题“第三视图”。
根据我上一个问题的答案,我可以深入到“第二视图”,但是当我尝试执行 segue 以将“第三视图”推送到堆栈时,我得到与根据我之前的问题:
由于未捕获的异常“NSGenericException”而终止应用程序,原因:“找不到用于 segue 'Admin' 的导航控制器。只有当源控制器由 UINavigationController 的实例管理时,才能使用推送 segue。'
在我的 AppDelegate 中,当我收到通知时,我会选择所需的选项卡:
UINavigationController *navController = (UINavigationController*)[_tabBarController selectedViewController];
NHProfileViewController *profileViewController = navController.viewControllers[0];
[profileViewController displayAdminWebViewForPushNotification];
然后在profileViewController(第一个视图)displayAdminWebViewForPushNotification:
_displayAdminForPushNotification = YES;
[self performSegueWithIdentifier:@"Settings" sender:self];
在上图中,“设置”是“第二视图”。
然后在prepareForSegue:
if ([segue.identifier isEqualToString:@"Settings"])
{
NHSettingsTableViewController *settingsViewController = segue.destinationViewController;
if (_displayAdminForPushNotification)
{
[settingsViewController displayAdmin];
_displayAdminForPushNotification = NO;
}
}
到目前为止一切都很好,但是只要我点击 [settingsViewController displayAdmin]:
- (void)displayAdmin
{
[self performSegueWithIdentifier:@"Admin" sender:self];
}
它崩溃了。我已经做了一些调试,此时 settingsViewController 没有导航控制器(因此出现崩溃/错误消息)。这我不明白,因为“第一视图”嵌入在导航控制器中。
【问题讨论】:
标签: ios uinavigationcontroller segue uistoryboardsegue drilldown