IBOutlets在iOS 8设备上为nil,但在iOS 9上正常工作(Swift)

12
在运行iOS 8时,基于nib的视图控制器的IBOutletnil,但在运行iOS 9时可以正常工作。有任何想法为什么会发生这种情况?
我的应用程序支持iOS 8+,我正在运行Xcode 7.2。
1个回答

11

问题出在我的UIViewController实例化方式上。将 let myVC = MyViewController()

改为 let myVC = MyViewController(nibName: "MyViewController", bundle: nil) 解决了这个问题。


4
可以使用NSBundle(forClass: self.dynamicType)代替将nil传递给bundle参数。 - orkoden
谢谢你的建议。使用 NSBundle(forClass: MyViewController.self) 会更准确吗? - jjramos
1
甚至更好的是:let myVC = MyViewController(nibName: String(MyViewController), bundle: NSBundle(forClass: MyViewController.self)) - jjramos
@jjramos:这个在Xcode 7.3上停止工作了吗?在我的情况下,当我按照上面的建议实例化视图控制器时,我会收到这个错误:“表达式类型不明确,需要更多上下文”。尽管添加了显式类型、强制转换等,但我无法解决这个问题。 - Nick Kanellopoulos
我已经添加了一个自定义的init方法。添加一个对 init(nibName:, bundle: ) 的重写(并在其中调用super)即可解决问题。谢谢! - Nick Kanellopoulos
在 Swift 4 中:您可以使用 MyViewController(nibName: String(describing: MyViewController.self), bundle: Bundle(for: type(of: self))) - Amjad Husseini

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接