我有一个UITableViewCell
通过包含 aUITextField
和UILabel
. 我想在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;
}