2016-07-28 47 views
0

我正在開發iOS應用程序,因此我使用UITableViewController。在「的cellForRowAtIndexPath」我用細胞再利用標識:引用具有重用標識符的單元格

[[[UITableViewCell alloc] initWithStyle:UITableViewCellStyle1 reuseIdentifier:textFieldIdentifier]; 

的問題是,有些細胞對彼此,例如dependecy如果用戶在一個單元格中輸入文本,另一個單元格將更改其值。

那麼什麼是最好的方式來安全的參考細胞必須改變?問題是,如果我在「cellForRowAtIndexPath」中保證引用的安全,在「textFieldDidChange」的回調期間,引用可能被破壞,例如,如果由於重用標識符,單元格不可見或其他單元格擁有地址?!

回答

1

不要嘗試保存對緩存單元格的引用。更新您需要在表格的數據源中顯示,然後致電reloadData。這樣,表格會照顧刷新可見單元格並處理緩存......所以你不需要。

+1

允許自己擴大了一點:你應該有你的細胞模型,所有的變化應該在該模型中得到體現。在更新模型後,根據需要重新加載相應的單元格或整個表格。 – Losiowaty

0

我會做一個協議,用於細胞

@protocol MyProtocol <NSobject> 
- (void) changeText:(NSString)theText; 
@end 

@interface TableViewCell1 : UITableViewCell 
@property (nonatomic, weak) id<MyProtocol> delegate; 
@end 

@implementation TableViewCell1 
//put this in the method where you get the value of the textfield 
[self.delegate chageText:@"Hello"]; 
@end 

@interface TableViewCell2 : UITableViewCell <MyProtocol> 
@end 

@implementation TableViewCell2 
- (void) chageText:(NSString *)text { 
    self.textLabel.text = text; 
} 
@end 
相關問題