1

我的应用程序中有 5 个视图控制器,项目以NavigationController. 自然,当我可以将一个动作连接到从视图 1 到视图 2 的“推送”时,我的视图 2 将有一个导航栏和一个后退按钮。

所以我的布局是这样的: 1 ViewController 有 4 个圆形矩形按钮,带有“推送”到其他 4 个视图的操作。因为我有 5 个,所以第五个实际上是我添加的附加视图,为了到达该视图,您必须触摸我放置在第 4 个视图中的圆形矩形按钮,该按钮将“水平翻转”到第五观点。

这是问题所在,现在我的第 5 个视图没有导航栏,当我在第 5 个视图上添加一个圆形矩形按钮以重新回到第 4 个视图时,我现在看到曾经的导航栏不再存在.

我曾尝试手动添加导航栏以查看 4 和 5,我能够成功执行此操作,但我无法通过拖动它们向它们添加“返回”按钮。有人可以帮我解决这个问题吗?

4

2 回答 2

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类设置为:翻转

这将允许您保留导航栏和翻转动画。

于 2013-07-19T02:32:41.960 回答
0

您可以简单地将第 5 个 ViewController 嵌入到 navigationController 在第 5 个 VC 中现在将有一个导航栏。添加一个 UIBarButton 并将其链接到执行以下操作的方法:

[self.navigationController.presentingViewController dismissViewControllerAnimated:YES completion:nil];

只是为了解释,你的第 5 个视图的导航控制器(你嵌入它的那个)现在将被它的presentingViewController

此外,模态翻转转场实际上将进入导航控制器。

编辑/注意:当做这样的转换时,我发现以编程方式更容易做到,所以你可以将任何东西传递给你的(第 5 个)viewController 没问题。在这种情况下,您将创建您的第 5 个 VC,然后创建以第 5 个 VC 作为其根的 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];
于 2013-07-19T04:03:48.307 回答