我習慣於把viewWillAppear
和viewDidLoad
中的任何一個,直到知道爲止。不過,我認爲應該有一些規則指導何時投入viewWillAppear
以及何時投入viewDidLoad
?何時放入viewWillAppear以及何時放入viewDidLoad?
回答
我使用的簡單規則是這樣的。 viewDidLoad
是視圖的資源加載時。該視圖尚未在屏幕上繪製。因此,不應將處理視圖的幾何和視覺的計算和代碼放在這裏。他們應該在viewWillAppear
或viewDidAppear
方法中。
此外viewWillAppear中可以多次調用
- 當顯示酥料餅/模態的視圖,並刪除
- 當顯示警報視圖/ actionsheet/uiactivityController的視圖併除去。
由於這些原因,viewWillAppear
不應包含需要更長時間才能完成的代碼。 (至少是在主線程上運行的代碼)。每個視圖顯示只需要運行一次代碼。
我確信還有更多,但這些都很簡單,我希望它有幫助。
viewDidLoad中:你警報視圖已完成加載
viewWillAppear中:運行得認爲負載
viewDidLoad
之前的事情你必須做一次。每次出現視圖時都會調用viewWillAppear
。你應該做的事情,你只需要做一次在viewDidLoad
- 就像設置你的UILabel
文本。但是,您可能需要在用戶每次查看該視圖時修改視圖的特定部分,例如每次進入「正在播放」視圖時,iPod應用程序都會將歌詞滾動回頂部。
但是,當您從服務器加載內容時,還必須考慮延遲。如果你將所有的網絡通信打包到viewDidLoad或viewWillAppear中,它們將在用戶看到視圖之前執行 - 可能導致應用程序短暫凍結。首先向用戶顯示帶有某種活動指示符的未填充視圖可能是個好主意。當您完成網絡連接時,可能需要一兩秒鐘(甚至可能會失敗 - 誰知道?),您可以使用數據填充視圖。各種嘰嘰喳喳客戶都可以看到關於如何做到的好例子。例如,當您在Twitterrific中查看作者詳細信息頁面時,該視圖只會在網絡查詢完成之前顯示「正在加載...」。
很好的解釋,只是我讀過它之前在這裏:http://stackoverflow.com/questions/1579550/uiviewcontroller-viewdidload-vs-viewwillappear-what-is-the-proper-division-of –
- 1. 什麼時候使用viewDidLoad以及何時使用awakeFromNib
- 2. 如何將計時器放入GUI中?
- 3. 在調用super之前/之後放置代碼viewDidLoad和viewWillAppear
- 4. 如何以及何時在CMS中放置asp.net代碼
- 5. 如何以及何時釋放指針中的資源
- 6. 何時使用構造函數以及何時傳入參數
- 7. YouTube嵌入時播放時會放大 - Google如何做到這一點?
- 8. 時的NodeJS以及如何堆內存被釋放?
- 9. 何時以及爲什麼需要釋放對象?
- 10. 如何收集Knockout observables以放入JSON?
- 11. viewWillAppear中VS viewDidLoad中IOS
- 12. 何時調用viewDidLoad?
- 13. Lua:何時以及如何將表格寫入_G
- 14. GWT MVP何時以及如何使用依賴注入
- 15. 如何檢測文件何時放入我的文件夾中
- 16. viewWillAppear何時被調用?
- 17. 如何把Dropbox放入Iframe?
- 18. 如何放入表格
- 19. 如何將TextField放入AlertView?
- 20. 如何將QWebView放入QTabWidget?
- 21. 如何將@string放入setHint
- 22. 如何將BufferedImage放入ByteBuffer?
- 23. 如何將ResouceBundle放入ContextMenu
- 24. 如何將值放入HashMap?
- 25. 如何將UITextView放入UIAlertView?
- 26. 如何將jpg放入JComboBox?
- 27. 如何將jar放入mvnrepository.com?
- 28. 如何把JavaScript放入Sass?
- 29. 如何將值放入scr
- 30. 如何將xml放入couchDB?
試過Google ....? –