2016-01-22 91 views
0

正如我們所知,UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1]];方法在細胞離開我們的視線後無效。 (它已被系統放入可重複使用的單元池中)那麼我們如何跟蹤這個單元內部的信息呢?如何跟蹤滑出屏幕的tableViewCell?

我創建了另一個單元格變量來指向它。在方法-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath中,我製作了_trackMarkCell = cell; trackMarkCell是當前控制器的屬性。這樣我總能得到細胞的信息。但我覺得這種方式不是那麼聰明,有沒有更好的解決方案?

謝謝。

回答

1

所以,基本上,UITableviewCell只是一個觀點,那就是用來所以從方法顯示UITableView內容-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath你可以箱子一個新的細胞,或者細胞已經在游泳池,你可以重複使用它

來到您的問題,與我上面提到的信息,單元格擁有用於在tableview上顯示的信息,所以你只需要擔心細胞,但數據顯示在單元格中顯示。您只需跟蹤數據並在更新單元格時,在使用單元格之前清除單元格的所有信息(這是新創建的或從池中重新使用的)。例如

讓我們假設你正在單元格中顯示圖像,但過了一段時間後,單元格中的圖像發生了變化,在這種情況下,你只需更改數據源不在單元格中的圖像if u的使用圖像陣列中的單元格以顯示圖像,使用所述另一個小區

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kMenuTableCellReuseId]; 
    if(cell == nil) 
    { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kMenuTableCellReuseId]; 
    } 
    //hear clear all the info present in the cell 
    //no need of this also u can directly update the cell, but for clarity i mentioned this 
    cell.myImageView.image = nil; 

    //just load the cell with new data 
    cell.myImageView.image = [dataSource objectAtIndex:indexPath.row]; 

    //.... other code   

    return cell; 
} 

一兩件事來跟蹤其存在於這可能給ü其他小區的不同信息的池的小區的。或者該單元可能會釋放。所以只需跟蹤數據而不是表格視圖單元格。

0

不知道如何填充單元格,但如果您通過模型對象數組提供單元格,則可以訪問該數組中的所有數據。 ( - array[3],其中「3」是需要的對象的指數如)

0

那麼,我們如何跟蹤的信息,你可以用你基於陣列中的索引尋求信息參考對象在這個細胞裏面?

你只是沒有。單元不存儲信息。單元顯示來自數據源的信息。您將數據存儲在數組或核心數據中,或者存儲在服務器或其他任何地方。然後你只要在單元格中顯示它。

0

你可以做的是,你可以從單元中獲取數據,並將其放入UITableViewCell的prepareForReuse方法的集合中:這將在單元重用之前調用。