[英]ViewController from StoryBoard make ViewDidLoad called twice
[英]viewDidLoad not called when initialising obj viewcontroller from Swift
在我的 Swift 代碼中,我試圖實例化一個如下所示的 Objective-C 視圖控制器,但是沒有調用viewDidLoad
方法。
let detailMessageVC = DetailMessageViewController(nibName:nil, bundle:nil)
如果我像這樣從 Objective-C 代碼實例化相同的視圖控制器,它確實會被調用。 視圖控制器沒有xib。
self.detailMVC = [[DetailMessageViewController alloc] init];
有誰知道為什么會這樣? 我希望在從 Swift 調用時具有相同的行為,因為我依賴viewDidLoad
來執行各種初始化。 這是 Xcode 6.3.2
正如評論所述,視圖控制器的初始化與其viewDidLoad
回調之間沒有聯系。
您甚至可以在 init 之前調用viewDidLoad
。 因為如果 ViewController 有效地加載了一個視圖,就會調用viewDidLoad
。
檢查那里: https : //stackoverflow.com/a/4862772/1486230
雖然,除非您知道將有效地顯示您的 ViewController,否則我不會依賴viewDidLoad
; 主要是通過使用myVC.view
。
試想一下,初始化一個 ViewController(它只是一個邏輯對象)與創建它的視圖是不同的。 出於性能原因,如果不需要,iOS 不會創建圖形對象。 如果您對 Swift 和 Objective-C 有所不同,那更多是因為 Swift 在優化方面可能更好。 但行為是正常的。
對於 iOS 9+,您可以調用vc.loadViewIfNeeded()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.