2014-01-29 135 views
0

我在尋找cellForRowAtIndexPath的替代方法。我想要做的是在我的私有方法中,我正在檢查退出單元格中的文本是否存在於數組中,如果是,則選擇該單元格,否則保持取消選中狀態。我瞭解到,cellForRowAtIndexPath只對可見單元格有效,如果單元格不可見,則返回nil。以下是我現在的代碼:cellForRowAtIndexPath的替代方法

- (void)selectCells:(NSArray *)array 
{ 
    for (int row = 0; row < [self.tableView numberOfRowsInSection:1]; row ++) 
    { 
     NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row 1]; 

     UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath]; 

     if ([array containsObject:cell.textLabel.text] && !cell.isSelected) 
     { 
      [self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; 
     } 
    } 
} 

我還能用什麼來達到這個目的?

+0

要清楚:你要替換的UITableView的cellForRowAtIndexPath,或在的cellForRowAtIndexPath的的UITableViewDelegate?他們是兩個完全不同的東西。 (並且你不能真正「替換」任何一個 - 它們必須存在並被調用。) –

+0

我不想替換實際的cellForRowAtIndexPath。我正在尋找一種替代方法來獲取我的tableview上的所有單元格。所以在上面的方法中,我使用cellForRowAtIndexPath來獲取單元格,但我知道它不會給我不可見的單元格。我想在上面的方法,可以返回我所有的細胞或建議一些最好的方式來實現我想要的東西。 –

+0

嗯,你沒有回答我的問題。但是你問錯了。您不會嘗試維護所有單元格,只是單元格中的數據。我發現一個包含NSMutableDictionarys的NSMutableArray對此很有效 - 每個單元屬性都是相應字典中的名稱/值對。 –

回答

6

我檢查如果在離開單元中的文本是本到一個數組

這聽起來像一個根本問題。在模型視圖控制器範例中,視圖負責顯示數據並與用戶交互,而模型負責存儲和操作數據。你不應該在查看單元格的內容並根據此做出決定;你應該看看你的模型中的數據。

UITableView以這種方式工作,因爲如果您遵循MVC,完全沒有必要保持周圍的細胞不可見。每當表需要顯示一個新的單元格時,它會通過調用-tableView:cellForRowAtIndexPath:來請求該單元格。

我正在尋找一種替代方法來獲取我的tableview上的所有單元格。

細胞並不全部同時存在。您可以想象使用不同的索引路徑調用數據源的-tableView:cellForRowAtIndexPath:方法,就像表一樣,並且這將返回每個單元格。但這可能不是正確的解決方案;您需要知道表格數據的存儲位置,以便首先填充表格的單元格,所以您應該直接查看數據。

0

當您填充單元格時,它們都將唯一標識符存儲在數組中。如果你沒有太多的細胞這應該工作。然後,您可以使用self.cellArray或任何您所稱的方法,並在索引路徑中獲取對象。我會按照建議將數據分開,然後在cellForIndexPath中渲染單元格時,請確保根據數據選擇或取消選擇單元格。

Setting static table cells