我有一个这样设置的故事板:
- 导航控制器 --- 连接到 ---> 视图A ---> 表格单元格Segue ---> 视图B
- 独立的视图C,即,在故事板中没有任何其他视图连接到它。
当我在视图A中点击一个单元格,它会自动执行Segue到视图B。在视图B中,在显示视图并触发应用程序事件后,它会自动关闭自身并推送视图C的一个实例,就像这样:
视图B:
- (void)someEvent
{
ViewCController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewC"];
[self.navigationController pushViewController:controller animated:YES];
}
这很好,查看 C 能正常显示。然而,当我在查看 C 的导航栏上点击“返回”按钮时,我希望它能直接回到 View A 而不是 View B。我尝试了以下代码:
View C:
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[self.navigationController popToRootViewControllerAnimated:animated];
}
这个操作几乎符合预期,因为View C被关闭了,View A再次出现,绕过了View B。问题在于,View A中的导航栏仍然认为它深层级,因为它仍然显示“返回”按钮,而不是View A中的按钮。我必须再次点击“返回”按钮才能显示正确的按钮。
我错过了什么吗?