2011-06-20 82 views
1

這不是「請幫我調試我的代碼」消息。我確實有它的工作,但想深入瞭解如何它的工作原理!將UITableView鏈接到NSMutableArray

我有一個基於視圖的xCode應用程序。在我的主視圖中,我有一個UITableView,並將委託和數據源設置爲文件所有者。

在我的Main ViewController的.h文件中,在@interface部分,我聲明瞭一個NSMutableArray,它將包含一個自定義對象列表。

在@interface聲明中,我包含了協議UITableViewDelegate和UITableViewDataSource。

稍後,按幾次按鈕後,我的代碼會解析服務器中的XML文件並將對象插入到NSMutableArray中。我將代碼添加到了cellForRowAtIndexPath函數中,它被調用,應該是這樣,當我爲我的UITableView調用reloadData方法時,表格會填充從我的XML中解析出來的結果!

很酷,但我想了解這是怎麼發生的;一個更好的理解將在未來對我有用。

我從來沒有明確地將我的NSMutableArray綁定到該UITableView。爲什麼當一個對象被添加到數組時,cellForRowAtIndexPath被調用?它如何連接?這是因爲NSMutableArray是在@interface塊中聲明的,它具有上面提到的協議?如果我在.XIB上有兩個UITableView,代碼如何知道哪個NSMutableArray應映射到哪個UITableView? (或者是我應該努力避免的東西?)即使我只有XIB上的UITableView,如果我有兩個NSMutableArrays,我會不得不關注它們以某種方式糾纏我的UITableView?

謝謝!

回答

1

NSMutableArray ---在你的情況下,它是要在表視圖中顯示的數據。當顯示必須發生時,表格視圖請求使用數據源的數據。

它們是如何連接的 - 數據源詢問數據沒有其他顯式連接。

如何處理2表視圖 - 理想的方法是每個表視圖都有不同的數據源對象,每個對象都有自己的NSMutableArray數據。

1表視圖和2 NSMutableArray - 留給數據源實現,根據您的需要可以顯示任何NSMutableArray對象的數據。

爲什麼cellForRowAtIndexPath在對象被添加到數組時被調用? - 您可能正在調用視圖reloadData

0

無論何時調用[tableView reloadData];你的cellForRowAtIndexPath方法和numberOfRowsInSection被調用。

它是因爲UITableViewDataSource協議。 NSMutableArray和UITableView之間沒有聯繫。

當一個新的對象被添加到數組中後,[tableView reloadData];將被調用。因此,現在將調用cellForRowAtIndexPath方法,該方法將使計數增加1。

希望這個幫助。 :)