【问题标题】:IBOutlets are nil on iOS 8 devices, but work fine on iOS 9 (Swift)IBOutlets 在 iOS 8 设备上为零,但在 iOS 9 (Swift) 上工作正常
【发布时间】:2016-04-07 23:50:10
【问题描述】:

在运行 iOS 8 时,我基于 nib 的视图控制器的 IBOutlets 是 nil,但在运行 iOS 9 时,它们可以正常工作。任何想法为什么会发生这种情况?

我的应用支持 iOS 8+,我运行的是 Xcode 7.2。

【问题讨论】:

    标签: ios swift nib backwards-compatibility iboutlet


    【解决方案1】:

    问题在于我的 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))
    • @jjramos:这是否停止与 Xcode 7.3 一起使用?在我的情况下,我收到此错误:Type of expression is ambiguous without more context,同时按照上面的建议实例化视图控制器。尽管添加了显式类型、强制转换等,但我无法解决这个问题......
    • 编辑:我添加了一个自定义初始化方法。为init(nibName:, bundle: ) 添加一个覆盖(并在其中调用super)做到了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-02
    • 2017-11-04
    • 2018-08-01
    • 1970-01-01
    • 2014-06-18
    • 2023-03-28
    相关资源
    最近更新 更多