Jak zdobyć UITableViewCell z jednego z jego podstron

mamUITableView zUITextField w każdym z nichUITableViewCells. Mam metodę w moim ViewControllerze, która obsługuje zdarzenie „Did End On Exit” dla pola tekstowego każdej komórki i to, co chcę zrobić, to zaktualizować dane modelu o nowy tekst.

Obecnie mam:

- (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;
}

Oczywiście robięfield.superview.superview.superview działa, ale wydaje się tak hacky. Czy jest bardziej elegancki sposób? Jeśli ustawię tag tegoUITextField doindexPath.row komórki, w której się znajdujecellForRowAtIndexPath czy ten tag będzie zawsze poprawny nawet po wstawieniu i usunięciu wierszy?

Dla tych, którzy zwracają szczególną uwagę, możesz pomyśleć, że je mam.superview za dużo tam, a dla iOS6 miałbyś rację. Jednak w systemie iOS7 istnieje dodatkowy widok (NDA uniemożliwia opracowanie formularza) w hierarchii między widokiem zawartości komórki a samą komórką. To dokładnie ilustruje, dlaczego robienie superviewa jest trochę hacky, ponieważ zależy od tego, jak to zrobićUITableViewCell jest zaimplementowany i może przerwać aktualizację systemu operacyjnego.

questionAnswers(4)

yourAnswerToTheQuestion