我有一个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;
}