【发布时间】:2016-04-07 23:50:10
【问题描述】:
在运行 iOS 8 时,我基于 nib 的视图控制器的 IBOutlets 是 nil,但在运行 iOS 9 时,它们可以正常工作。任何想法为什么会发生这种情况?
我的应用支持 iOS 8+,我运行的是 Xcode 7.2。
【问题讨论】:
标签: ios swift nib backwards-compatibility iboutlet
在运行 iOS 8 时,我基于 nib 的视图控制器的 IBOutlets 是 nil,但在运行 iOS 9 时,它们可以正常工作。任何想法为什么会发生这种情况?
我的应用支持 iOS 8+,我运行的是 Xcode 7.2。
【问题讨论】:
标签: ios swift nib backwards-compatibility iboutlet
问题在于我的 UIViewController 被实例化的方式。改变
let myVC = MyViewController()
对于
let myVC = MyViewController(nibName: "MyViewController", bundle: nil) 解决了这个问题。
【讨论】:
NSBundle(forClass: self.dynamicType)而不是传递nil作为捆绑包
NSBundle(forClass: MyViewController.self)会更准确吗?
let myVC = MyViewController(nibName: String(MyViewController), bundle: NSBundle(forClass: MyViewController.self))
Type of expression is ambiguous without more context,同时按照上面的建议实例化视图控制器。尽管添加了显式类型、强制转换等,但我无法解决这个问题......
init(nibName:, bundle: ) 添加一个覆盖(并在其中调用super)做到了。谢谢!