gpt4 book ai didi

ios - 快速实例化 UIViewController

转载 作者:行者123 更新时间:2023-11-28 14:05:04 26 4
gpt4 key购买 nike

假设我有自定义 View Controller ,它们有自己的正确设置的 .xib 文件。

我也有这个扩展

class func fromNib<T: UIViewController>() -> T
{
return T(nibName: String(describing: T.self), bundle: nil)
}

让我们调用自定义 UIViewController VC

let customVC    = VC()
let customVC:VC = .fromNib()

前两种方法之间的主要区别是什么?有趣的是,我同时使用了它们,并且都有效,但并非总是如此,也并非对所有人都有效。使用第一种方法,我设法发现,无论何时将 Controller 添加为子 Controller ,它都是 loadView 并且生命周期开始。使用第二种方法,您必须实现以下两件事:

override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?)
required init?(coder aDecoder: NSCoder)

我尝试用第一种方法替换所有曾经有 .fromNib 的东西,以便跳过实现上面的那些方法,而只是在 viewDidLoad 中做所有事情。

为什么第一种方法对某些 Controller 完美无缺,而对其他 Controller 却没有连接 socket ?

最佳答案

没关系,我发现了这个错误。我在 loadView 中的某些 Controller 中使用了 socket 而不是 viewDidLoad,并且在 loadView socket 中为零。我真笨。PS:第一种方法适用于 .xib 文件。我知道从代码到 .xib 文件没有任何联系,我猜 xcode 只知道你的 ViewController 是 .xib 文件的所有者并自动加载它。

关于ios - 快速实例化 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53086719/

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