在我的iPhone项目中,我正在使用包含UITextfields的UITableViewCells的UITableview。我在许多应用程序中看到,可以使用下一个按钮跳转到下一个单元格中的下一个文本字段。完成此任务的最佳方法是什么?
我的想法是获取正在编辑的文本字段的单元格的indexPath,然后通过cellForRowAtIndexPath获取下一个单元格。但是如何获取我正在编辑的单元格的indexPath?
谢谢!
答案 0 :(得分:7)
UITextField
个实例的引用。 UITextField
个实例分配唯一标记值。[finalTextField setReturnKeyType:UIReturnKeyDone];
在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];
希望它有所帮助!