3

我有一个UITableViewCell通过包含 aUITextFieldUILabel. 我想在cellForRowAtIndexPath调用时更新这些视图的值。

我首先尝试获取对文本字段和标签的引用,如下所示:

UITextField *textfield = (UITextField*)[cell.contentView viewWithTag:10];
UILabel *label = (UILabel*)[cell.contentView viewWithTag:20];

这适用于UILabel,但我只能获得对UITextField第一次创建单元格的引用,我能够设置原始值 ( textField.text) 但从不更新它。如果我检查子视图数组,我可以看到UITextField存在,但我无法使用viewWithTag. 我切换到这个(下),它的工作原理:

UITextField* textField = [[cell.contentView subviews] objectAtIndex:0];
UILabel *label = [[cell.contentView subviews] objectAtIndex:1];

为什么第一种方法不起作用?这样做的正确方法是什么?

此代码在以下上下文中:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*) indexPath
{
  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"DetailCell" forIndexPath:indexPath];
  UITextField* textField = [[cell.contentView subviews] objectAtIndex:0];
  textField.text = @"<something>";
  UILabel *label = [[cell.contentView subviews] objectAtIndex:1];
  label.text = @"<something else>";
  return cell;
}
4

1 回答 1

1

对不起。这只是我的一个错误,我很抱歉浪费你的时间。我覆盖了在 Storyboard UI 中设置的 textField.tag 的值。(我认为它是 Storyboard 中设置的值,但事实并非如此)。原始代码运行正常。仍然不确定哪种方法更好。假设特定索引或特定标签值更安全吗?这些对我来说似乎都不安全。

于 2013-09-19T20:34:40.720 回答