簡體   English   中英

快速實例化UIViewController

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM