indexPathForCell returns nil since ios7

前端 未结 3 1208
陌清茗
陌清茗 2020-11-29 09:10

my app was running fine under ios6.1. tried the ios7 simulator and the following part does not work:

EditingCell *cell = (EditingCell*) [[textField superview         


        
3条回答
  •  暖寄归人
    2020-11-29 10:07

    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.

提交回复
热议问题