[英]Swift instantiating a UIViewController and adding as subview in same file
[英]Instantiating UIViewController in swift
假設我有自定義視圖控制器,它們的.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()
前2種方法之間的主要區別是什么? 有趣的是,我既使用了它們,又使用了它們,但不是總是使用,也不是全部使用。 使用第一種方法,我設法發現,每當將控制器添加為子級時,它就是loadView,並且生命周期開始。 使用第二種方法,您必須實現以下兩件事:
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?)
required init?(coder aDecoder: NSCoder)
我嘗試用第一種方法替換以前具有.fromNib的所有內容,以跳過上述方法的實現,而只在viewDidLoad內部執行所有操作。
為什么第一種方法對於某些控制器來說是完美無缺的,而對於另一些控制器卻沒有連接插座?
沒關系,我發現了這個錯誤。 我在loadView內的某些控制器中使用的是插座,而不是viewDidLoad,並且loadView內的插座為零。 我真笨。 PS:第一種方法確實適用於.xib文件。 我知道從代碼到.xib文件沒有任何連接,我想xcode只是知道您的ViewController是.xib文件的所有者,並自動將其加載。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.