indexPathForCell returns nil since ios7

Your approach to find the “enclosing” table view cell of a text field is fragile,
because is assumes a fixed view hierarchy (which seems to have changed between
iOS 6 and iOS 7).

One possible solution would be to traverse up in the view hierarchy until the table view cell is found:

UIView *view = textField;
while (view != nil && ![view isKindOfClass:[UITableViewCell class]]) {
    view = [view superview];
}
EditingCell *cell = (EditingCell *)view;

A completely different, but often used method is to “tag” the text field with the row
number:

cell.textField.tag = indexPath.row;   // in cellForRowAtIndexPath

and then just use that tag in the text field delegate methods.

Leave a Comment