2013-03-22 25 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