【发布时间】:2013-03-11 23:18:08
【问题描述】:
我在每个单元格中都有一个 UITextfield,我为其分配了一个等于当前行号的标签。
cell.textfield.tag = indexPath.row;
当用户结束编辑文本字段时,我需要 indexpath.row。
-(void) textFieldDidEndEditing:(UITextField *)textField{
CustomCell *cell = (CustomCell *) [[textField superview]superview];
if([cell isKindOfClass:[UITableViewCell class]]){
//NSIndexPath *indexPath = [Table indexPathForCell:cell];
int row = textField.tag;
NSLog(@"indexpath: %d",row);
NSString *str = [datasource objectAtIndex:row]; //get exception here
.............. }
我在这里面临的问题是,当我使用deleteRowsAtIndexPaths 删除一行,然后结束编辑最后一个单元格时,我得到错误的标签号,因为数据源不包含该索引处的元素。此外,我不能使用indexPathForCell:,因为如果正在编辑文本字段的单元格超出屏幕,它将返回 null。
我该怎么做才能获得正确的标签号?我不想重新加载表格,因为它没有任何动画。什么可以替代?欢迎任何建议。谢谢。
【问题讨论】:
-
您是否正在删除此标签
[tableView BeginUpdates]和[tableView endUpdates]中的行? -
是的,我在这些标签内做。
-
不要使用 indexPath.row 来分配标签,你可以定义你的值..
-
如果我将自己的值分配给标签,当我删除一行时它们将如何更改?
-
我需要一个正确的值来访问正确的数组索引,即使单元格不可见。
标签: ios uitableview tags uitextfield