在performSegueWithIdentifier之后,UIViewController未添加到视图控制器层次结构中

时间:2015-03-19 14:12:03

标签: ios objective-c ios8 uinavigationcontroller segue

我有以下方法在应用程序处于前台时正常运行。 SecondViewController被推送到UINavigationController的视图控制器堆栈的顶部。

我在UINavigationController中有两个UIViewController的FirstViewController和SecondViewController,而FirstViewController是UINavigationController的rootViewController

 1. UINavigationController *navigationController =
    (UINavigationController*) self.navigationController;      
 2. [self.navigationController
    performSegueWithIdentifier:@"showSecondView" sender:self];     
 3. SecondViewController * secondController = (SecondViewController*)
    navigationController.viewControllers[1];       
 4. [secondController performSomeAction];

在推送SecondViewController之后,我弹出到UINavigationController的rootViewController,它是FirstViewController。当应用程序位于前台时,此代码可以正常工作。

我有一个调用FirstViewController的iOS8交互式通知,它使用performSegueWithIdentifier推送SecondViewController。

交互式通知正确调用FirstViewController,但UINavigationController控制器不会推送SecondViewController(参见上面的代码),即使应用程序在前台时代码正确。

我做过一些初步调查

  • Segue Identifier是正确的
  • 当我在UINavigationController没有推送SecondViewController的情况下将断点放在第四行时,secondController实例是SecondViewController。
  • 断点显示,即使在performSegueWithIdentifier之后,UINavigationController也只有FirstViewController。
  • 乐器中没有内存泄漏

感谢任何帮助!

0 个答案:

没有答案