我的问题很简单。我有一个故事板使用导航控制器和视图,让我们说view1,view2,view3和view4。它们之间的流动如下:
view1 --> view2 (push)
view2 --> view3 (push)
view3 --> view4 (push)
view4 --> view2 (push)
我想要做的是,当我在view2点击后退按钮时,我总是想去view1而不是view4。我应该遵循什么逻辑呢?
注意:不是它们是root视图。
答案 0 :(得分:3)
为此你可以做两件事之一。
要么放松一下......
在ViewController1中添加一个类似...的方法
- (IBAction)unwindBackToHere:(UIStoryBoardSegue *)segue
{
// do something
}
然后在故事板中拖动"完成"按钮到绿色"退出"在视图控制器下面的门,你应该看到你创建的方法。
这个新的" segue"将从ViewController4一直弹回ViewController1。
然后你可以用它来做其他事情,比如重新加载屏幕......
或者你可以回到它。
//in ViewController4
- (void)doneButtonPressed
{
[self.navigationCongtroller popToViewController:viewController1 animated:YES];
}
这比较麻烦,因为这意味着首先要抓住视图控制器1。
答案 1 :(得分:0)
当你在view4上并想要推送view2时,不要使用segues并将一个viewControllers数组推送到UINavigationController,如下所示:
NSArray *viewControllers = @[view1, view2];
[self.navigationController setViewControllers:viewControllers animated:YES];
这将从堆栈中删除view4并具有您想要的层次结构。
另一个选项是用你自己的替换view2的后退按钮,并在其动作方法上使用以下内容:
[self.navigationController popToViewController:view1 animated:YES];