【问题标题】:UITableview Scroll erases data in text field inside UITableviewcellUITableview Scroll 擦除 UITableviewcell 内的文本字段中的数据
【发布时间】:2011-04-27 17:16:07
【问题描述】:

我在表格视图单元格中有一个带有 UITextfield 的 UITableViewController。如果我滚动表格视图,用户在文本字段中输入的数据就会消失。我试图将文本字段数据添加到 NSMutableArray 但它仍然不起作用。请帮忙。

【问题讨论】:

  • 没有代码是很难解决的。试着给一些代码sn-ps过来。

标签: ios uitableview scroll


【解决方案1】:

cellForRowAtIndexPath: 被调用时,你返回的单元格必须用你想显示的任何数据完全填充。因此,如果单元格包含 UITextfield,则需要将其 text 属性设置为数据中该行的正确值。

当表格单元格从屏幕顶部或底部消失时,UITableViewCell 本身就可以重新使用。 (当您滚动时,单元格消失,并出现新的单元格,但 UITableView 类正在重新使用 UITableViewCell 对象。)在cellForRowAtIndexPath: 中,当您使用缓存单元格时,您必须确保设置您想要的所有内容显示有问题的行,否则您可能会在表格中看到一些奇怪的行为。

这有帮助吗?

编辑:

这是cellForRowAtIndexPath: 中使用的典型模式的示例。注意dequeueReusableCellWithIdentifier: 的使用。该方法返回一个先前分配但未使用的 UITableViewCell,如果有的话。进一步注意,如果没有返回缓存的单元格,代码将创建一个新的单元格,并设置它(使用与任何可能特定于行的内容无关的内容)。之后,您可以根据需要为相关行设置单元格。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 静态 NSString *SearchResultsCellIdentifier = @"SearchResultsCellIdentifer"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SearchResultsCellIdentifier]; 如果(单元格 == 零) { 单元格 = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle 重用标识符:SearchResultsCellIdentifier] 自动释放]; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; } // 此处单元格的特定行设置 // ... 返回单元格; }

查看文档以获取有关这些方法的详细信息。 Apple 和其他地方提供了很多关于如何实现 tableViews 的示例。

【讨论】:

  • 感谢您的回复。我无法理解这一点。 - 当您使用缓存单元格时,您必须确保设置您希望它为相关行显示的所有内容,否则您可能会在表格中看到一些奇怪的行为。你能说得更清楚些吗?谢谢
  • 查看我添加到答案中的 EDIT。
  • 再次感谢。我已经做到了。但我的问题是用户输入数据,当 UITableview 单元格向上滚动时,用户在 UItextfield 中输入的数据消失了。
  • 啊!好的。因此,您将需要实现 UITextFieldDelegate 方法,并且可能需要实现 UIScrollViewDelegate 方法来检测表格何时移动,以便如果您的文本字段之一处于活动状态,您可以保存文本字段值以供以后使用(填写单元格重新出现时的文本字段。)
  • 你的意思是 textfield didbeginediting 和 didendediting 方法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-19
  • 1970-01-01
相关资源
最近更新 更多