それぞれに がありUITableViewます。ViewController に、各セルのテキスト フィールドの「Did End On Exit」イベントを処理するメソッドがあり、できるようにしたいのは、モデル データを新しいテキストで更新することです。UITextFieldUITableViewCells
私が現在持っているものは次のとおりです。
- (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 の更新で壊れる可能性があるため、スーパービューの実行が少しハックである理由を正確に示しています。