我的应用中有5个视图控制器,项目以NavigationController
开头。当然,当我可以将一个动作从视图1“连接”到视图2时,我的视图2将有一个导航栏和一个后退按钮。
所以我的布局是这样的:1 ViewController有4个圆形的矩形按钮,动作可以“推”到其他4个视图。由于我有5个,第五个实际上是我添加的附加视图,为了到达该视图,您必须触摸我放置在第4个视图中的圆形矩形按钮,该按钮将执行“水平翻转”到第五视图。
这是问题所在,现在我的第5个视图没有导航栏,当我在第5个视图上添加圆形矩形按钮以切换回第4个视图时,我现在看到曾经的导航栏是不再存在
我尝试手动添加导航栏以查看4& 5,我能够成功完成,但我无法通过拖动它们向他们添加“后退”按钮。有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
您可以使用自定义segue类,而不是添加后退按钮。创建一个名为“flip”的新文件,并使其成为UIStoryBoardSegue的子类。创建文件后,打开flip.m并将此代码粘贴到@end
上方- (void) perform {
UIViewController *src = (UIViewController *) self.sourceViewController;
UIViewController *dst = (UIViewController *) self.destinationViewController;
[UIView transitionWithView:src.navigationController.view duration:.8
options:UIViewAnimationOptionTransitionFlipFromLeft
animations:^{
[src.navigationController pushViewController:dst animated:NO];
}
completion:NULL];
}
接下来转到故事板并从第4个视图到第5个视图选择segue。将样式设置为custom并将segue类设置为:flip
这将允许您保留导航栏和翻转动画。
答案 1 :(得分:0)
你可以简单地在导航控制器中嵌入第五个ViewController在第五个VC中,现在会有一个导航栏。添加UIBarButton并将其链接到执行以下内容的方法:
[self.navigationController.presentingViewController dismissViewControllerAnimated:YES completion:nil];
只是为了解释,你的第五个视图的导航控制器(你嵌入它的那个)现在将被presentingViewController
此外,模态翻转segue实际上将转到导航控制器。
编辑/注意:当进行这样的转换时,我发现编程更容易,所以你可以将任何东西传递给你的(5th)viewController没问题。在这种情况下,您将创建第5个VC,然后创建以5VC为根的navigationController。
// setup of firstVC
UIViewController *firstVC = [[UIViewController alloc] initWithNibName:@"firstVC" bundle:nil];
// Create the navCon with firstVC as root
UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:firstVC];
// Set it to flip
[navCon setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
// Now present it
[self presentViewController:navCon animated:YES completion:nil];