2016-07-28 12 views
0

私はiOS-Appを開発していますので、私はUITableViewControllerを使用しています。 「cellForRowAtIndexPath」の中で、私は再利用識別子を用いて細胞を使用します。再利用識別子を持つセルへの参照

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

問題は、いくつかの細胞は互いに、例えば上dependecyを持っているということですユーザーが1つのセルにテキストを入力すると、別のセルがその値を変更します。

変更する必要があるセルへの参照を安全にする最も良い方法は何ですか?問題は、 "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 
関連する問題