iPhone:在uitableview中跳转到下一个uitextfield,怎么样?

时间:2010-05-13 08:41:41

标签: iphone uitableview uitextfield

在我的iPhone项目中,我正在使用包含UITextfields的UITableViewCells的UITableview。我在许多应用程序中看到,可以使用下一个按钮跳转到下一个单元格中的下一个文本字段。完成此任务的最佳方法是什么?

我的想法是获取正在编辑的文本字段的单元格的indexPath,然后通过cellForRowAtIndexPath获取下一个单元格。但是如何获取我正在编辑的单元格的indexPath?

谢谢!

2 个答案:

答案 0 :(得分:7)

  1. 在表格视图中保持对UITextField个实例的引用。
  2. 为您的UITextField个实例分配唯一标记值。
  3. 在上一个文本字段中,您可以设置其返回键类型,将键盘的返回键标签从“下一步”更改为“完成”:[finalTextField setReturnKeyType:UIReturnKeyDone];
  4. UITextField委托方法-textFieldShouldReturn:中,浏览响应者:

    - (BOOL) textFieldShouldReturn:(UITextField *)tf {
        switch (tf.tag) {
            case firstTextFieldTag:
                [secondTextField becomeFirstResponder];
                break;
            case secondTextFieldTag:
                [thirdTextField becomeFirstResponder];
                break;
            // etc.
            default:
                [tf resignFirstResponder];
                break;
        }
        return YES;
    }
    

答案 1 :(得分:0)

假设UITextField已添加到UITableViewCell,如下所示

UITableViewCell *cell;
UITextField *textField;
...
textField.tag = kTAG_TEXTFIELD;
[cell.contentView addSubview:textField];
...

您可以通过

获取当前索引路径
-(BOOL)textFieldShouldReturn:(UITextField *)textField {
  if([textField.superView.superView isKindOfClass:[UITableViewCell class]]) {
    UITableViewCell *cell = (UITableViewCell *)textField.superView.superView;
    NSIndexPath *indexPath = [self.myTableView indexPathForCell:cell];
  }
  ...

下一行的UITextField将是

NSIndexPath *indexPathNextRow = [NSIndexPath indexPathForRow:(indexPath.row+1) inSection:indexPath.section];
UITableViewCell *cellNextRow = (UITableViewCell *)[self.myTableView cellForRowAtIndexPath:indexPathNextRow];
UITextField *textFieldNextRow = (UITextField *)[cellNextRow.contentView viewWithTag:kTAG_TEXTFIELD];

希望它有所帮助!