我想在視圖出現之前執行代碼,但在viewWillAppear
之前調用viewDidLoad
。爲什麼這樣?爲什麼viewDidLoad在viewWillAppear之前被調用?
2
A
回答
6
當視圖加載到內存時,ViewDidLoad被調用。即如果您正在使用故事板,則應用程序已取消存檔視圖並將其加載到內存中(尚未顯示在屏幕上)。
當應用程序準備好在屏幕上加載視圖時,它將調用viewWillAppear方法。
就你而言,如果你想在視圖出現在屏幕上之前執行代碼,你可以將它添加到viewDidLoad或viewWillAppear中。
0
因爲視圖需要加載到內存中才能顯示。 您需要進一步瞭解視圖生命週期。檢查this link。
只有在視圖和它的元素被加載到內存之後,視圖纔會被繪製在屏幕上,並分別調用viewWillAppear和viewDidAppear。
如果您需要在視圖出現之前執行代碼,您需要使用viewWillAppear
方法。
0
我只是想提供一些更多的信息,也許它會幫助你。 如果您使用的約束,你可以旁觀:
- viewDidLayoutSubviews()
調用,以通知其觀點,剛剛制定了 其子視圖的視圖控制器。
所以它會在您的約束應用後調用。
相關問題
- 1. 在調用super之前/之後放置代碼viewDidLoad和viewWillAppear
- 2. viewDidLoad中被調用,但viewWillAppear中不叫
- 3. viewDidLoad在didSelectRowAtIndexPath之前被調用
- 4. viewDidLoad在initWithFrame之前被調用?
- 5. 爲什麼viewWillAppear不會被調用?
- 6. 爲什麼viewWillAppear沒有被調用?
- 7. viewWillAppear和viewDidAppear不調用,而viewDidLoad調用什麼時在UIViewController
- 8. 爲什麼viewDidLoad在didSelectItemAtIndexPath之前運行?
- 9. 爲什麼iOS6在viewdidload之前調用私有方法?
- 10. 在什麼情況下viewWillAppear被調用?
- 11. UITableView方法被調用之前ViewDidLoad
- 12. 在initWithNibName之前調用ViewDidLoad?
- 13. viewDidLoad在applicationDidFinishLaunching之前調用
- 14. viewDidLoad在init之前調用?
- 15. viewDidLoad在IBAction之前調用?
- 16. iPhone:viewWillAppear之前在viewDidLoad之後調用了什麼?
- 17. 什麼時候ViewWillAppear被調用?
- 18. 爲什麼relaodData調用viewDidLoad
- 19. 什麼在viewDidLoad之前運行?
- 20. 爲什麼viewDidLoad在解散UIIMagePickerViewController後被調用?
- 21. 爲什麼「numberOrRowsInSection」在「viewDidLoad」中途被調用?
- 22. viewDidLoad在prepareForSegue完成之前調用
- 23. viewDidLoad在構造函數之前調用
- 24. viewDidLoad()在prepareForSegue()之前調用完成:Swift
- 25. segue.destinationViewController在prepareForSegue()之前調用兩次viewDidLoad()
- 26. iOS - viewDidLoad在didFinishLaunchingWithOptions委託之前被調用?
- 27. viewDidLoad中工作,而viewWillAppear中被延遲
- 28. 爲什麼在GetCurrent之前調用IEnumerator.MoveNext?
- 29. 爲什麼在OleUninitialize()之前調用CoFreeUnusedLibraries()?
- 30. 爲什麼ContentProvider.onCreate()在Application.onCreate()之前被調用?