2

非常初学者的 obj-c 问题。

我有两个部分的普通 UITableView,但我现在只对第一部分感兴趣。此部分有四个自定义单元格(继承自标准 UITableViewCell),它们有一个 UITextField 作为属性。

我需要使用按钮“下一步”、“上一个”(用于在表格视图中的文本字段之间切换)和“完成”(关闭键盘)来改进自定义输入附件视图。http://uaimage.com/image/62f08045

在 -textFieldShouldReturn 中,我将 textFields 的标签设置为从 0 到 3。我的下一个计划是将 textFields 添加到 -viewDidLoad 中的 NSMutableArray 中,然后设置并辞去 textFields 的第一响应者。“下一步”按钮的大致代码清单:

- (void) inputAccessoryViewDidSelectNext:(FDInputAccessoryView *)view {
    for (UITextField *textField in [self textFieldsArray]) {

        if ([textField isFirstResponder]) {

            [textField resignFirstResponder];
     UITextField *field = [[self textFieldsArray] objectAtIndex:textField.tag + 1];
            [field becomeFirstResponder];
        }

    }
}

问题:

  • 这是正确的方法还是有更好的方法来解决问题?
  • 我是否需要在它们内置的内容中标记文本字段或使用单元格的 indexPath?(或者什么是最好的跟踪文本字段?)
  • 主要问题是:从单元格中“获取”文本字段的语法是什么?

对不起,愚蠢的问题,我是一个非常初学者。

谢谢,亚历克斯。

4

1 回答 1

5

我认为您的想法是正确的,但我想到了一些事情:

  • 为了安全起见,不要从标记号 0 开始。每个视图都有一个默认为 0 的标记号,因此您可能会得到意想不到的结果。
  • 不要在 中设置文本视图的标签,在或textFieldShouldReturn中设置标签,无论您在哪里初始化 textFields。cellForRowAtIndexPathviewDidLoad
  • 将 textFields 添加到单元格的 contentView,而不是单元格本身。
  • 您不必从第一个文本字段中退出第一响应者,您只需becomeFirstResponder在新的文本字段中即可。
  • 确保您正在处理最后一个文本视图边缘情况:您可以循环到第一个文本字段或在最后关闭键盘。

如果要获取单元格中的 textField:

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:
                         [NSIndexPath indexPathForRow:ROW_NUMBER inSection:1]];
UITextField *textField = (UITextField *)[cell.contentView viewWithTag:TEXT_FIELD_TAG];
于 2012-11-06T22:04:19.300 回答