【问题标题】:Input view for textfields in table view表格视图中文本字段的输入视图
【发布时间】:2011-10-01 14:02:03
【问题描述】:

我有一个 UITableView,每行都有文本字段。

我想以不同的方式访问这些文本字段,例如为一个文本字段添加选择器视图,单击一个文本字段时导航到另一个视图。

我知道当这些文本字段在普通视图中时该怎么做,但我以前从未在 tableview 上做过。

请帮忙。

【问题讨论】:

  • 我不知道在哪里写代码
  • 在普通视图中,如果我们使用文本字段和我使用的选择器视图在 IB 中连接它们,但是如何在此处进行操作,因为这些文本字段在 tableview 中
  • 您是否尝试为 cellForRowAtIndexPath 中的每个文本字段设置标签?比如 textField.tag=indexPath.row ,然后通过标签访问它。
  • 不,我没有。可以发个示例代码吗?
  • 我把上一条评论的代码贴出来了,试试看,然后用[self.view viewWithTag:yourTag];访问textField;

标签: iphone ios xcode


【解决方案1】:

您的问题是在哪里放置代码以处理用户与表格视图单元格的交互。这样做的正确位置是表视图控制器的didSelectRowAtIndexPath: 方法。

但是,有一些警告

  • 您需要将UITextFieldDelegate 协议添加到您的表格视图控制器。
  • 您可以使用标签区分活动的UITextFields,如其他答案中所建议的那样。
  • 但是,回收单元格可能会导致对文本字段的严重混淆。因此,请确保更新 cellForRowAtIndexPath: 中未创建新单元格的部分中的 id 标签。
  • 当您希望弹出另一个控制器时,您应该使用UITextField。在这种情况下,只需使用UILabelUITableViewCell 提供的textLabel 属性。当用户选择行时推送另一个控制器。
  • 如果您希望在不离开表格视图的情况下弹出键盘,请仅使用UITextField

【讨论】:

    【解决方案2】:

    在为文本字段分配标签时还有一件事,不要忘记这一行

    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
       reuseIdentifier:nil] autorelease];
    

    【讨论】:

    • 我能告诉你为什么吗?...我认为这行代码和将标签分配到文本字段没有关系。
    【解决方案3】:

    我认为您需要为每个文本字段添加标签,例如

    textfield.tag = indexpath.row;
    

    根据标签你可以继续前进...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      • 1970-01-01
      • 2020-12-04
      • 1970-01-01
      相关资源
      最近更新 更多