それぞれに がありUITableView
ます。ViewController に、各セルのテキスト フィールドの「Did End On Exit」イベントを処理するメソッドがあり、できるようにしたいのは、モデル データを新しいテキストで更新することです。UITextField
UITableViewCells
私が現在持っているものは次のとおりです。
- (IBAction)itemFinishedEditing:(id)sender {
[sender resignFirstResponder];
UITextField *field = sender;
UITableViewCell *cell = (UITableViewCell *) field.superview.superview.superview;
NSIndexPath *indexPath = [_tableView indexPathForCell:cell];
_list.items[indexPath.row] = field.text;
}
もちろんうまくfield.superview.superview.superview
いきますが、それはとてもハックなようです。もっとエレガントな方法はありますか?のタグをUITextField
セルのindexPath.row
に設定cellForRowAtIndexPath
すると、行を挿入および削除した後でも、そのタグは常に正しいでしょうか?
.superview
細心の注意を払っている人は、1 つ多すぎると思うかもしれませんが、iOS6 の場合はそうです。ただし、iOS7 では、セルのコンテンツ ビューとセル自体の間の階層に余分なビューがあります (NDA によりフォームの作成が妨げられます)。UITableViewCell
これは、どのように実装されているかを知ることに依存し、OS の更新で壊れる可能性があるため、スーパービューの実行が少しハックである理由を正確に示しています。