【问题标题】:Swift transitionCoordinator() unexpectedly found nil errorSwift transitionCoordinator() 意外发现 nil 错误
【发布时间】:2014-08-14 10:49:23
【问题描述】:

我正在尝试按照此示例 on stackoverflow 使用 transitionCoordinator() 平滑地为 navigationBar.barTintColor 设置动画。但是在模拟器上运行时会产生 “致命错误:在展开可选值时意外发现 nil” 这是我在 viewDidLoad 中调用的代码:

var Coordinator = self.transitionCoordinator()
Coordinator.animateAlongsideTransition({ context in  //line of error
     self.navigationController.navigationBar.barTintColor = self.UIColorFromRGB(0x209624)
}, completion:nil)

【问题讨论】:

    标签: xcode swift ios8


    【解决方案1】:

    来自 Apple 文档:

    与当前活动关联的转换协调器对象 如果没有进行转换,则转换或 nil。

    ...和:

    如果没有与当前视图关联的正在进行的转换 控制器,UIKit 检查视图控制器的祖先 协调器对象,如果存在则返回该对象。

    因此,请将您的代码移至 viewWillAppear,您可以在其中检索现有的转换协调器。 在viewDidLoad self.transitionCoordinator() 返回nil。

    【讨论】:

    • 还是同样的错误!将代码移动到override func viewWillAppear(animated: Bool) { ... 后的事件
    • 我的主导航控制器有背景颜色,子视图导航背景颜色是透明的。我只是想要在..之间导航时平稳过渡。
    • 因此,如果出现同样的错误,则意味着没有过渡协调器参与到视图控制器的过渡中。你如何导航/显示/展示你的视图控制器?
    • 我有两个视图,我使用 uinavigationController 在 tableview 和我的详细视图之间导航,所以当我在 table view 中时,我的导航栏有背景,而当我在详细视图时导航栏是透明的。带有表格的视图是在应用程序启动时首先加载的视图
    • 好吧,我通过在 if 条件中包装我的 transitionCoordinator() 解决了这个问题,尽管谢谢。
    猜你喜欢
    • 2020-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 2021-09-09
    相关资源
    最近更新 更多