iOS7上tableview单元格中的文本字段崩溃

Posted

技术标签:

【中文标题】iOS7上tableview单元格中的文本字段崩溃【英文标题】:Textfield in tableview cell crashes on iOS7 【发布时间】:2013-12-10 10:37:41 【问题描述】:

我的代码在 ios6 上运行良好,但在 iOS7 中崩溃。

我将文本字段与表格视图单元格文本字段进行比较。

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField


    DLog(@"-> %@", textField.text);

    PhotoViewCustomCell *cell = (PhotoViewCustomCell*)[[textField superview] superview];
    NSIndexPath *indexPath = [tblPhotoDetail indexPathForCell:cell];

    //PhotoViewCustomCell *cell = (PhotoViewCustomCell *)[tblPhotoDetail cellForRowAtIndexPath:indexPath];

    PhotoInformation *objPhotoInfo = [selectedPhotos objectAtIndex:indexPath.row];

    if ([textField isEqual:cell.mytextfield]) 
     =========>crashing in this line

       do something
    
    else 
    
      do something
    

错误

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UITableViewCellScrollView mytextfield]: unrecognized selector sent to instance 0xdc119a0'

【问题讨论】:

【参考方案1】:

添加额外的 superview 调用以获取您的单元格。看起来你正在隐藏 UITableViewCellScrollView,它在 contentView 上方的层次结构中

 PhotoViewCustomCell *cell = (PhotoViewCustomCell*)[[[textField superview] superview] superview];

【讨论】:

【参考方案2】:

Accepted Answer 中的代码不是更安全的代码,也不能用于iOS 6。我宁愿建议您使用此代码。 :

UIView *view = [textField superview];
while (![view isKindOfClass:[PhotoViewCustomCell class]]) 
    view = [view superview];

PhotoViewCustomCell *cell = (PhotoViewCustomCell *)view;

【讨论】:

以上是关于iOS7上tableview单元格中的文本字段崩溃的主要内容,如果未能解决你的问题,请参考以下文章

重用 tableview 单元格中的元素

尝试快速从数组中删除时,不应删除 tableview 单元格中的最后一个单元格

点击保存按钮并存储在字典中时获取表格视图单元格中的文本字段?

我想在 tableview 单元格中显示文本字段数据,以替换 iphone 中单元格上的现有数据?

从自定义 tableView 单元格文本字段中获取数据

在 iOS 中,如何在两个单元格中的文本字段之间切换?