gpt4 book ai didi

ios - UIViewController 没有正确加载它的 xib

转载 作者:搜寻专家 更新时间:2023-10-31 22:58:27 25 4
gpt4 key购买 nike

我正在重现以下案例,希望找出问题的理论原因。问题如下:

当我声明一个新的 Swift View Controller 和 nib 对时,有时 View Controller 的导出根本不加载( 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")
}

当我手动输入 Nib 名称时,所有设备上的一切都按预期工作。

谁能给我一点启发,为什么需要这样做,问题的原因是什么。

最有趣的部分是这个问题只发生在非常小的设备子集上(在我的例子中,就是上面提到的)。

更新:似乎问题只发生在 iOS 8 而不是 iOS 9+,在测试时发现并从 Zonily Jame 下面链接的票证中发现。

最佳答案

这是我用来手动设置 viewController 的方法

class ViewController: UIViewController {
init() {
super.init(style: .plain)
}

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}

然后我只设置框架并将其添加为 subview 。

let vc = ViewController()!
vc.view.frame = CGRect(x: xValue, y: yValue, width: desiredWidth, height: desiredHeight)
view.addSubview(vc.view)
addChildViewController(vc)
vc.didMove(toParentViewController: self)

并通过说将其删除

vc.view.removeFromSuperview()
vc.removeFromParentViewController()
vc = nil

关于ios - UIViewController 没有正确加载它的 xib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40894716/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com