我有3个视图控制器,方便地命名为A,B,C A使用UINavigationController呈现,并且具有到C的推送segue。
我希望的效果是,在执行segue之后,C&C的后退按钮会将我们弹出 B ,然后B的后退按钮将我们弹出到A.实际上,这个意味着segueing到C会将B和C都放到堆栈上。
在iOS7中,我成功使用了以下(编辑过的)代码:
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
CViewController *slotViewer = segue.destinationViewController;
/* Do Stuff */
BViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"B"];
[self.navigationController pushViewController:controller animated:NO];
}
结果外观是从A到C的平滑过渡,而B被加载,B的ViewWillAppear仅在点击C&C的后退按钮时被调用。
但是,在iOS8上,这会中断:过渡会在屏幕上短暂闪烁B,调用viewWillAppear,然后才会显示C.
在iOS8中执行此转换的任何惯用方法?
我知道我可以使用here所描述的方法,但感觉很尴尬,我宁愿一直使用Segues。
答案 0 :(得分:1)
您链接的方法(setViewControllers)旨在完全按照您的要求进行操作。为什么尴尬?它是由Apple提供的。除此之外,没有办法只使用segues。你之前的解决方案就像是以编程方式推送第一个解决方案,然后通过界面构建器推送第二个解决方案。这是尴尬的人:)。
答案 1 :(得分:0)
请不要这样做。你不应该像那样修改导航堆栈!这很尴尬。