我的故事板设置如下:
点击View A中的一个单元格,自动执行segue到View B. 在视图B中,在显示视图并触发应用程序事件后,它会自动解除自身并推送View C的实例,执行以下操作:
查看B:
- (void)someEvent
{
ViewCController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewC"];
[self.navigationController pushViewController:controller animated:YES];
}
这一切都很棒,View C弹出视图。但是,当我点击View C导航栏上的“后退”按钮时,我希望它一直弹回到View A,而不是View B.我试过这个:
查看C:
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[self.navigationController popToRootViewControllerAnimated:animated];
}
这几乎与预期的一样,因为View C被取消,View A重新绕过View B.问题是,View A中的导航栏仍然认为它更深一层,因为它仍然显示“Back”按钮而不是视图A中的那些。我必须再次点击“返回”按钮才能显示正确的按钮。
我错过了什么?
答案 0 :(得分:1)
我不确定你能做到这一点,或者你应该这样做。后退按钮有一个特定的目的 - 回到上一个视图控制器,我不认为你应该试图颠覆它(它的标题将指向那个,而不是你的第一个)。最好在viewC中向导航栏添加另一个栏按钮,并将其连接到执行popToRootViewController的代码。
答案 1 :(得分:1)
在视图C中分配您自己的barButtonItem并将其放在self.navigationItem.leftBarButtonItem
中以替换后退按钮并使此按钮的操作执行[self.navigationController popToRootViewControllerAnimated:YES]