首页 > 解决方案 > 如何在 Objective-C 中将多个 ViewController 链接到 NavigationController

问题描述

当我尝试将视图控制器添加到我的导航控制器时,它工作得非常好......但是当我通过自定义 segue 将第一个视图控制器连接到第二个时,它没有将第二个 ViewController 链接到 NavigationController

在此处输入图像描述

如您所见,第三个 ViewController 没有连接到 NavigationController 并且没有导航栏。

这是 SegueClass 中的所有内容

@implementation SegueFromRight

(无效)执行{

UIViewController *src = self.sourceViewController;
UIViewController *dst = self.destinationViewController;
CATransition *transition = [[CATransition alloc] init];
CAMediaTimingFunction *timeFunc = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseInEaseOut];

transition.duration = 0.25;
transition.timingFunction = timeFunc;
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromRight;

[src.navigationController.view.layer addAnimation:transition forKey: kCATransition];

[src.navigationController pushViewController: dst animated: false];

}

@结尾

有什么我需要补充的吗?

标签: iosobjective-cxcode

解决方案


这是因为您创建了自定义转场。Interface Builder 无法知道这将等同于推送(显示)segue,因此默认情况下它不显示导航栏。但这只是表面问题;场景在 Interface Builder 中的显示方式对于运行时实际发生的事情没有意义。

如果您想在 Interface Builder 中看到导航栏,只需请求即可;在此视图控制器的属性检查器中,将 Top Bar -> Inferred 更改为可见的导航栏类型。

如果您需要导航项,只需将导航项直接添加到此场景即可。


推荐阅读