2013-03-22 51 views
2

我在每个单元格中都有一个UITextfield,我为其分配一个等于当前行号的标签。在UITableviewcell里面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:,因为如果我的正在编辑文本字段的单元格不在屏幕上,它将返回空值。

我能做些什么来获得正确的标签号码?我不想重新加载表格,因为它没有任何动画。什么可以替代?任何建议都是值得欢迎的。谢谢。

+0

您是否正在删除此标记中的行'[tableView BeginUpdates]'&'[tableView endUpdates]'? – 2013-03-22 07:05:37

+0

是的,我在做这些标签。 – NightFury 2013-03-22 07:06:44

+1

不要使用indexPath.row来分配标签,你可以定义你的值。 – iphonic 2013-03-22 07:06:55

回答

0

不要使用indexPath.row,而不是定义的值类似下面

我已经写了下面的代码通过假设,我不知道你的数据源,可能是不同的..

for(int i=0;i<10;i++){ 
    Data *obj=[[Data alloc] init]; 
    obj.tag=i;// 
    [email protected]"your value"; 

    [dataSource addObject:obj]; 
} 

Data *obj=[dataSource objectAtIndex:indexPath.row]; 
cell.textfield.tag = obj.tag; 

,而你将获取标签

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

     Data *obj; 
     for(Data *data in dataSource){ 
      if(data.tag == row){ 
       obj=data;break; 
      } 

     } 

     NSString *str = obj.value; 
    } 
+0

感谢您的回答。我会在得到结果后再告诉你。 – NightFury 2013-03-22 07:32:32

+0

如果我删除一行,我的数据源被更新。我将如何管理标签号码? – NightFury 2013-03-22 08:22:04

+0

数据源绝对更新,但不是值 – iphonic 2013-03-22 09:45:53

0

这可能是更容易使用免费的明智的TableView框架来管理所有这些文本字段。框架根据您的类属性简单地创建它们,并自动将输入的值写回到您的类中。在我看来,真的很容易使用和简单的iOS形式。

+0

感谢您的建议。但在这个阶段我无法使用这个控件。我将在未来记住它。谢谢:) – NightFury 2013-03-25 07:00:09

相关问题