Iphone 在uitableview的文本字段之间导航

Iphone 在uitableview的文本字段之间导航,iphone,uitableview,navigation,uitextfield,Iphone,Uitableview,Navigation,Uitextfield,我正在制作一个coredata应用程序,在该应用程序中,我被指示制作一个tableview填充表单,在每一行中使用textfield,我成功地做到了这一点。然后,我制作了一个带有“上一个”和“下一个”按钮的工具栏,并将其添加到textField的InputAsoryView中,以便在每个单元格的textfields之间导航。每行一个文本字段。我也能用“上一步”和“下一步”按钮的方法来实现这个神奇的效果。现在的问题是: 假设我有3个部分。在第一节中有4行。第二节中有6行,最后一节中有1行。现在,当

我正在制作一个coredata应用程序,在该应用程序中,我被指示制作一个tableview填充表单,在每一行中使用textfield,我成功地做到了这一点。然后,我制作了一个带有“上一个”和“下一个”按钮的工具栏,并将其添加到textField的InputAsoryView中,以便在每个单元格的textfields之间导航。每行一个文本字段。我也能用“上一步”和“下一步”按钮的方法来实现这个神奇的效果。现在的问题是:

假设我有3个部分。在第一节中有4行。第二节中有6行,最后一节中有1行。现在,当我从第1行开始,按下next直到第11行,它工作正常,但是当我按下next时,什么也没有发生,因为第一行被排了队,我得到了零。我正在使用的代码:

配置单元

if (cell == nil) {
    NSLog(@"tag inside:%i",tag);

    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1
                                   reuseIdentifier:identifier] autorelease];


    UITextField *theTextField = [[UITextField alloc] initWithFrame:CGRectMake(120, 10, 170, 25)];

    theTextField.textAlignment = UITextAlignmentRight;  

    theTextField.delegate = self;

    theTextField.tag = tag;
    theTextField.inputAccessoryView = [self configureTheToolBar];
    [theTextField setKeyboardAppearance:UIKeyboardAppearanceAlert];


    [cell.contentView addSubview:theTextField];
    [theTextField release];

}

cell.textLabel.text = rowLabel;
UITextField *textField = (UITextField *)[cell.contentView viewWithTag:tag];
textField.text = rowValue
我为文本字段提供标签,如601、602等

然后获取currentTextField标记

- (void)textFieldDidBeginEditing:(UITextField *)textField{

    currentTextField = textField.tag;
}
然后是下一种方法

if(currentTextField == 611){
        currentTextField = 601;     
    } else{
        currentTextField = currentTextField + 1;
    }
    NSLog(@"current text fiedld = %i",currentTextField);

    NSLog(@"text ; %@",[self cellForTag:currentTextField].textLabel.text);

        UITextField *firstResponderField = (UITextField *) [[self cellForTag:currentTextField].contentView viewWithTag:currentTextField];

        [firstResponderField becomeFirstResponder];
以及cellForTag方法:

-(UITableViewCell *)cellForTag:(NSInteger)tag{




     UITableViewCell *cell;
            switch (tag) {
                case 601:{


                    NSUInteger onlyRow[] = {0, 0}; 
                    NSIndexPath *onlyRowPath = [NSIndexPath indexPathWithIndexes:onlyRow length:2]; 
                    //[self.tableView scrollToRowAtIndexPath:onlyRowPath atScrollPosition:UITableViewScrollPositionTop animated:YES];

                    cell = [self.tableView cellForRowAtIndexPath:onlyRowPath];

                    break;
}
    return cell
此代码部分工作,因为一旦屏幕外的单元格超出内存,我无法访问该单元格中的textfield,并且“下一步”按钮停止工作,直到currentTextfield值到达任何可见行。解决办法是什么。我的堆栈溢出了


好的,线程完成了这个技巧,但我不知道怎么做。有人能告诉我怎么做吗?

一旦一个单元格离开屏幕,它将无法访问。因此,您可能希望在用户通过连接UIControlEventEditingDidEnd事件完成编辑后立即获取文本字段的值:

[myTextField 
   addTarget:self 
   action:@selector(myTextChanged:) 
   forControlEvents:UIControlEventEditingDidEnd];
在myTextChanged函数中,您可以将这些值存储起来,如果您想根据标记对它们进行键控,可以将它们存储在字典中