• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 如果我在 iOS8 模拟器上运行应用程序,则不会初始化来自 xib 的 IBOutlets

[复制链接]
菜鸟教程小白 发表于 2022-12-13 11:42:38 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我已经使用 XCode 7 GM(基础 SDK - iOS9)构建了一个应用程序。如果我在 iOS 9 模拟器上运行它可以完美运行,但如果我尝试在 iOS8 上运行它会失败:

@IBOutlet weak var collectionView: UICollectionView!

override func viewDidLoad() {
    super.viewDidLoad()
    navigationItem.title = NSLocalizedString("Home", comment: "Home")
    collectionView.registerNib(UINib(nibName: "THomeCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "THomeCollectionViewCell")
}

有错误

fatal error: unexpectedly found nil while unwrapping an Optional value

因为 collectionView 是 nil: enter image description here

当然,我已经检查了 IB 中的连接是否已建立: enter image description here

谁能告诉我为什么collectionView在这里是零?



Best Answer-推荐答案


我可以通过添加来解决这个问题

override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
    let name = NSStringFromClass(self.dynamicType).componentsSeparatedByString(".").last!
    super.init(nibName: nibNameOrNil ?? name, bundle: nibBundleOrNil)
}

到 View Controller 类。但是为什么它会这样工作呢?有没有其他方法可以解决这个问题?

更新: 这是一个 Swift View Controller 功能,与 bug 非常相似。查看 Can't Load UIViewController XIB file in Storyboard in SwiftAre view controllers with nib files broken in ios 8 beta 5?

它在 iOS 9.4 中已修复,但如果您需要 iOS 8 及更早版本的支持,您仍需要使用变通方法。

关于ios - 如果我在 iOS8 模拟器上运行应用程序,则不会初始化来自 xib 的 IBOutlets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32632421/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap