【发布时间】:2017-03-17 20:55:19
【问题描述】:
我正在复制以下案例,并希望找出问题的理论原因。问题如下:
当我声明一个新的 Swift 视图控制器和 nib 对时,有时视图控制器的出口根本不加载(笔尖根本不加载)。这只发生在特定设备上(在我的情况下,iPad mini 1,非视网膜,iOS 8.4.1。在我拥有的所有其他设备上,一切都按预期工作。
我找到的解决方案是用 nib 方法覆盖 init :
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
super.init(nibName: Constants.viewControllerNibName, bundle: nil)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
当我手动输入笔尖名称时,所有设备上的一切都按预期工作。
谁能给我一点启发,为什么需要这样做以及问题的原因是什么。
最有趣的是,这个问题只发生在一小部分设备上(在我的例子中,上面提到过)。
更新:似乎该问题仅发生在 iOS 8 上,而不发生在 iOS 9+ 上,在测试时发现该问题并从 Zonily Jame 下面链接的票证中发现。
【问题讨论】:
-
viewControllerNibName 是静态的吗?
-
我在阅读之前完全回答了这个问题。我没有直接尝试做您所说的事情,但是如果您可以提出更具体的问题,我应该提供宝贵的意见。
-
LOL 我们遇到了同样的问题Nib Issue 但不是特定设备,我的只是不会在特定操作系统上启动
-
你也可以这样做而不是覆盖
init(nibname: bundle:)方法required init() { super.init(nibName: Constants.viewControllerNibName, bundle: nil) } -
感谢您的快速回复:)。问题可能是iOS特定版本引起的,我唯一的iOS 8设备是上面提到的设备,我会做更多的测试并让你知道结果。 PS:@ZonilyJame,是的,您也可以将代码添加到所需的 init 方法中。 :)