1

這可能是正常的,但我是新的objective-c。 我有一個應用程序與兩個視圖控制器,都是表視圖。 當單擊一行時,我將第二個視圖加載到堆棧頂部,並通過其中一個屬性傳遞參數。 在第一個視圖(由導航控制器默認加載)中,首先調用viewDidAppear函數,它將從URL打開一個XML文件,爲每個節點構建一個對象並將所有對象推送到一個數組中。完成之後,調用numberOfRowsInSection並返回數組的計數,並且一切正常。 在另一個視圖上,在首先加載之後,調用numberOfRowsInSection,然後是viewDidAppear。我對iPhone真的很陌生,我不知道爲什麼會發生這種情況。iphone - numberOfRowsInSection之前調用viewDidAppear

謝謝!

回答

1

謝謝大家花時間回覆! 我發現了這個問題。 作爲xcode/iphone/mvc的新手,我忘了將視圖連接到IBOutlet對象。 我幾個小時的生活,我永遠不會回來。

+1

我不敢說我​​幾次都是這個n00b錯誤的受害者。 –

1

也許你應該考慮將你的代碼移動到-viewWillAppear-viewDidLoad

+0

那麼它適用於一種觀點,爲什麼它不適用於其他? –

+1

數據加載後,只需'[tableView reloadData]'來更新視圖。 – ZhangChn

+0

感謝您的回覆。還是行不通。 –

5

這很正常。在整個視圖完成加載並顯示後調用viewDidAppear。 這包括UITableView。 Table View需要numberOfRowsInSection函數初始化。

你有三個選項UITableView加載之前執行代碼:

1)將你的代碼-viewWillAppear - 這可以偶爾會顫抖

2)子類的UIViewController(機會是你已經這樣做了)並創建一個自定義的-init函數來處理您的設置

3)將您的初始化代碼放入-numberofRowsInSection。這總是調用UITableViewDataSource的第一種方法。這是hackish,但在實踐中運作良好。

+1

在大多數情況下,數據加載代碼不會進入viewWillAppear或viewDidAppear,因爲通常不必在出現/消失後重新加載視圖。 – ZhangChn

+0

s/loaded/visible /。 –

+0

@tc - >感謝指針。固定。 – 0x90

相關問題