【问题标题】:How to link multiple ViewControllers to a NavigationController in Objective-C如何在 Objective-C 中将多个 ViewController 链接到 NavigationController
【发布时间】:2021-03-21 00:17:07
【问题描述】:

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

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

这是 SegueClass 中的所有内容

@implementation SegueFromRight

(void) 执行 {

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];

}

@结束

还有什么需要补充的吗?

【问题讨论】:

    标签: ios objective-c xcode


    【解决方案1】:

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

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

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

    【讨论】:

    • 也是您的自定义segue不正确的情况;这不是制作自定义过渡动画的方法。但这是另一回事,与您提出的问题不同。
    猜你喜欢
    • 2017-10-03
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    相关资源
    最近更新 更多