2012-03-14 67 views
1

何時是在UITableView上調用[reloadData]的最佳時機? viewDidAppear或viewWillAppear?如果一個視圖被卸載,底層的tableview也會被卸載嗎?UITableView reloadData最佳實踐

我問的原因是由於我看到的一些行爲。假設一個視圖被要求重新加載它的數據源,但在視圖完成之前被釋放。一個場景將與一個UITabBarController並導航到不同的視圖,而不是被選中的ViewController。所以會發生什麼viewWillAppear被調用,但viewDidAppear沒有(因爲我導航了)。因此,ViewController會取消分配(連同其模型數據),但是如果我在viewWillAppear中調用reloadData,則會調用「cellForRow」和「numberOfRows」方法,從而導致「解除分配的實例」錯誤。那有意義嗎?您是否通常會在代碼中檢查nil,如果在請求顯示視圖時可以更改模型?

+0

它真的有點取決於你想要達到的目標。 – Gobot 2012-03-14 19:40:49

+0

嗯,我猜這種導致了我在iOS上看到的一些行爲。假設您的模型數據可以在每次出現視圖時更改(客戶數據存儲在客戶端的會話中)。 – Clay 2012-03-14 20:05:37

+0

什麼是釋放?表視圖通常不會因爲您導航到另一個選項卡而從內存中刪除,並且視圖控制器本身不會因爲視圖被卸載而被取消分配。你看到什麼崩潰? – jrturton 2012-03-15 07:32:17

回答

0

你從服務器獲取數據源之前或任何地方,你可以用一個blankcell顯示的實現代碼如下(你可以畫一個小區某事像404網頁) ,當你獲得數據時,然後重新加載tableview。 記得要將空白單元格的單元格數設置爲1