0

我今天早些时候发布了一个question关于对收到推送通知的反应,因此我需要从一个视图向下钻取到另一个视图。这个问题得到了回答,但是现在我已经转向另一个对推送通知做出反应的要求,因此我需要在导航堆栈中深入到第三个层次。iOS以编程方式向下钻取导航堆栈

下面是我的视图层次结构的模型,在收到推送通知后,我想深入查看标题“第三视图”。

Screenshot of view hierarchy

从回答我刚才的问题,我能然而深入到“第二个视图”,当我尝试执行SEGUE推动“三观”到堆栈中,我得到相同类型的错误,根据我的上一个问题:

由于未捕获的异常'NSGenericException'终止应用程序,原因:'无法找到导航控制器for segue'管理员'。只有当源控制器由UINavigationController的实例管理时,才能使用推塞网。

在我的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没有导航控制器(因此崩溃/错误消息)。这我不明白,因为“第一视图”嵌入在导航控制器中。

回答

1

您将执行第三次赛制 - 第二次赛制甚至没有完成,因此它没有navigationController。

延迟它通过使用这种方法后,赛格瑞执行操作:
How to execute some code after a segue is done?

或使用viewWillAppear中!

+0

谢谢大吉丹。我现在可以通过延迟[self performSegueWithIdentifier:@“Admin”sender:self]来使其工作。在“第二种观点”中,我想知道是否有更好的方法来做这件事,而不是通过延迟(知道第二轮赛完成的时间)?你提到didPerformSegue,但是我找不到这个方法? – Nick 2014-10-04 15:07:31

+0

http://stackoverflow.com/questions/18310396/how-to-execute-some-code-after-a-segue-is-done对不起,这就是我的意思 – 2014-10-04 15:19:05

+0

啊,好的,谢谢。如果您不介意我问另一个问题:如果我随后回复通知,则最终会在控制台中显示一条消息:“开始/结束外观转换的不平衡调用”。“,界面都搞砸了 - 我现在在堆栈上有两个版本的”第二视图“,而不是”第二视图“,然后是”第三视图“任何想法?如果我已经导航回到根视图或者留在“第三视图” – Nick 2014-10-04 15:34:37