我想了解一個視圖控制器的生命週期,我已經讀了幾條關於awakeFromNib
的矛盾聲明。該文件說,所有網點應設置在awakeFromNib
,但I see that it's not always true。 awakeFromNib
,prepareForSegue
之間的電話訂單是什麼時間?awakeFromNib vs Outlets - 當我們調用awakeFromNib時設置插座和segues
0
A
回答
0
您的視圖控制器及其視圖層次結構是在運行時從單獨的nib文件加載的。視圖層次結構的出口在加載視圖層次結構之前不會連接,這發生在視圖控制器加載後。 (我已經更深入地解釋了這個問題in this answer。)
假設你在導航控制器中有一個「主」視圖控制器。主視圖控制器執行segue來推動「詳細」視圖控制器。這裏是事件的順序:
細節視圖控制器從它的筆尖加載。如果故事板場景包含其他頂級對象,則這些對象也將被加載。
詳細視圖控制器接收到
awakeFromNib
:詳細視圖控制器的插座連接到場景中的其他頂層對象,但是視圖層次結構的插座不是。主視圖控制器接收到
prepareForSegue
,segue指向詳細視圖控制器。塞格要求導航控制器推動詳細視圖控制器。
導航控制器詢問詳細視圖控制器的視圖,以添加到導航控制器的視圖層次結構中。
細節視圖控制器加載其視圖層次結構的筆尖。這將詳細視圖控制器的插座連接到其視圖層次結構。
視圖層次結構中的所有對象都會收到
awakeFromNib
。詳細視圖控制器收到
viewDidLoad
。
相關問題
- 1. 調用awakeFromNib
- 2. CALayer in awakeFromNib vs drawRect
- 3. 在awakeFromNib中設置委託
- 4. init和awakeFromNib
- 5. awakeFromNib()和windowDidLoad()
- 6. 更多關於awakeFromNib vs viewDidLoad
- 7. 調用超類的awakeFromNib
- 8. awakeFromNib調用倍數倍
- 9. awakeFromNib方法調用多次
- 10. NSWindowController awakeFromNib被調用兩次
- 11. 使用(void)awakeFromNib
- 12. awakeFromNib不在我的ViewController中調用
- 13. 從awakeFromNib調用Bundle.main.loadNibNamed時的Infinit循環
- 14. awakeFromNib被調用,viewDidLoad不被調用
- 15. awakeFromNib對面?
- 16. awakeFromNib的好處?
- 17. viewDidLoad and awakeFromNib timing
- 18. 我該如何回憶awakeFromNib
- 19. awakeFromNib,applicationWillFinishLaunching和applicationDidFinishLaunching的順序?
- 20. UIKit:以編程方式調用awakeFromNib?
- 21. tabBarItem viewController將不會調用viewDidLoad或awakeFromNib
- 22. 視圖控制器調用awakeFromNib兩次
- 23. awakeFromNib多次呼叫
- 24. 如何喚醒awakefromnib
- 25. 可可 - awakeFromNib不叫
- 26. 在awakeFromNib期間自定義UIView的界限不正確 - 它們何時設置?
- 27. 什麼是[super awakeFromNib];用於?
- 28. 解釋awakeFromNib,initwithFrame使用
- 29. 何時使用awakeFromNib,initWithWindow,windowDidLoad方法?
- 30. awakeFromNib在使用instantiateWithOwner時未調用:方法
在UIView生命週期中使用'awakeFromNib'更常見。但是您要查找的順序是'prepareForSegue','awakeFromNib','viewDidLoad'您可以訪問awakeFromNib中的插座,但是您應該先閱讀需要首先嚐試訪問視圖控制器視圖的警告。所謂的「破解」另一個問題的海報就是感嘆。在'viewDidLoad'中設置視圖控制器更安全,更標準。 – beyowulf
謝謝!所以如果我們需要完全初始化的視圖和插座,我們用[self view]開始awakeFromNib –
這就是objective-c。在swift中,你可以說'print(self.view)',這有點荒謬,這也是我推薦使用'viewDidLoad'的原因。 – beyowulf