我想显示图像以响应iPhone锁定时发生的本地通知事件。当用户滑动通知时,我希望我的应用程序通过popToViewController:animated转到根视图控制器,然后推送显示图像的视图控制器。这在我设置动画= YES时有效。当动画=否时,显示图像的视图控制器在用户点击后退按钮时不响应。关于为什么图像视图控制器的导航控件在我没有动画的popToViewController时无法工作的任何想法?提前谢谢。
以下是相关代码......
- (void) localNotificationHandler
{
#ifdef kAnimatePop
animated = YES; // This works
#else
animated = NO; // This doesn't work
#endif
_showImage = YES;
// Check if this view controller is not visible
if (self.navigationController.visibleViewController != self) {
// Check if there are view controllers on the stack
if ([self.navigationController.viewControllers count] > 1) {
// Make this view controller visible
[self.navigationController popToViewController:self animated:animated];
}
}
}
- (void) viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
if (_showImage) {
_showImage = NO;
// Show image in a view controller
[self performSegueWithIdentifier:@"MainToImageSegue" sender:self];
}
}
答案 0 :(得分:1)
在调用popToViewController之前,不要设置_showImage。如果它是动画的viewDidAppear直到稍后才会被调用,所以它意外地起作用。如果它没有动画,则在设置_showImage之前立即调用viewDidAppear。将_showImage = true;
移动到导航控制器堆栈操作之前。
答案 1 :(得分:0)
我可以这样检查:
- (void) localNotificationHandler{
...
...
if (self.navigationController.topViewController != self) {
[self.navigationController popToRootViewControllerAnimated:NO];
}
}
我还建议用编程方式推送图像视图控制器,例如
[self.navigationController pushViewController:<imageVC> animated:YES];
如果您的图像视图控制器的导航按钮不起作用,很可能是因为它将这些导航消息发送到nil
。 aka,imageViewControllers self.navigationController
等于nil
。
我不确定如何使用故事板解决这个问题,但如果以编程方式呈现它,问题就会消失。