ios - 如何在 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];
}
@结尾
有什么我需要补充的吗?
解决方案
这是因为您创建了自定义转场。Interface Builder 无法知道这将等同于推送(显示)segue,因此默认情况下它不显示导航栏。但这只是表面问题;场景在 Interface Builder 中的显示方式对于运行时实际发生的事情没有意义。
如果您想在 Interface Builder 中看到导航栏,只需请求即可;在此视图控制器的属性检查器中,将 Top Bar -> Inferred 更改为可见的导航栏类型。
如果您需要导航项,只需将导航项直接添加到此场景即可。
推荐阅读
- java - 在重复的字符串中查找任何字符出现的总次数
- sql - 如何使用 while 循环增加自定义 ID 字段?
- spring - Hibernate Validation 不在 Spring Boot 应用程序中查找错误消息
- latex - 如何在 LaTex 中定义图片的指定页面?
- php - PHP仅循环表单文本字段
- java - 使用 Java REST 应用程序作为后端的 Angular 6 UI
- vb.net - 循环不会多次连接字符串
- sql - 使结果包含申请号或通过结果中的公开号查询申请号
- angular - 在网页上显示原始 HTML
- firebase - 使用数据列表进行 Firebase 搜索