Swift transitionCoordinator() 意外发现 nil 错误

Posted

技术标签:

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

我正在尝试按照此示例 on *** 使用 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)

【问题讨论】:

【参考方案1】:

来自 Apple 文档:

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

...和:

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

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

【讨论】:

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

以上是关于Swift transitionCoordinator() 意外发现 nil 错误的主要内容,如果未能解决你的问题,请参考以下文章

Swift入门系列--Swift官方文档(2.2)--中文翻译--About Swift 关于Swift

swift 示例BS swift.swift

swift swift_bug.swift

ios 整理(一)swift和oc的区别

swift swift_extension5.swift

swift swift_optional4.swift