2012-01-14 185 views
0

所以我一直在嘗試從UITableView加載單元格,並將它們放入NSMutableArray中,以便稍後迭代。我有一個名爲populateArrayWithCells的方法,它可以正常工作,直到我放入6個以上的單元格。出於某種原因,返回的對象是零。我的代碼是下面,StocksAndAccounts是UITableView的,我已經在子類部分中的UITableViewCells 1.循環遍歷UITableView的UITableViewCells

- (void) populateArrayWithCells 
{ 
for (int i = 0; i < [StocksAndAccounts numberOfRowsInSection:1]; i++) { 
    if ([StocksAndAccounts cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:1]] == nil) { 
     NSLog(@"object at index %i is nil", i); 
    } 
    [stocksCells addObject:[StocksAndAccounts cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:1]]]; 
} 
} 

該功能,通過一個IBAction爲調用時,則返回該細胞successfuly直到索引是6,在這種情況下,它是零和崩潰,因爲它試圖添加一個零的對象。任何有關這個問題的幫助將不勝感激。

+0

你爲什麼要這麼做。 – bryanmac 2012-01-14 02:20:20

+0

Uitableview具有數據的委託回調模式,並且存在單元重用隊列 – bryanmac 2012-01-14 02:21:05

+0

同意 - 爲什麼要這樣做?這聞起來像一個設計缺陷。 – 2012-01-14 02:22:36

回答

1

我想你已經誤解了UITableView的工作原理。 tableview中的單元格只在需要顯示時加載,並且它們被回收,所以如果一次只能在屏幕上看到六個單元格,那麼該表格將只包含六個單元格,並且它將不斷更新和重用那些相同的六個上下滾動。

不是將數據存儲在表格單元格中,而是將其存儲在視圖控制器中的自定義對象數組中,並在表格從數據源方法請求它們時使用這些對象填充單元格。

這樣,如果您需要將該數據用於非表格顯示以外的其他用途,則可以從原始對象重新創建它,而不是試圖將其複製出表格單元格。

+0

你可以給我提供代碼如何將數據存儲在自定義對象數組中,並將其用於cellforrowatindexpath。 – 2014-07-30 10:24:03

1

你正在倒退。

你的NSMutableArray(最好比這更堅固的模型)應該持有你想要顯示在你的UITableView,而不是相反。請查看Model-View-Controller設計模式。