我正在访问一个自定义复选框,我已在项目中将其用作自定义按钮,并尝试在我的表格视图单元格中访问它。
目前,它正确地提示按钮,并且工作正常,除了我滚动我的tableview,然后对按钮进行任何进一步更改(登记或结帐),按钮图像将覆盖较旧的图像,而不是更新绘图。
我只是很好奇,有没有解决这个问题?
我的代码看起来像这样:
我的cellForRowAtIndexPath代码如下所示:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"CustomTableCell";
CustomTableCell *cell = (CustomTableCell *)
[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"CustomTableCell"
owner:self options:nil];
cell = tableCell;
self.tableCell = nil;
}
CheckBox *chkBox = [[CheckBox alloc] init];
chkBox.frame = CGRectMake(10.0, -10.0, 50.0, 70.0);
[cell.contentView addSubview:chkBox];
[chkBox release];
cell.modelLabel.text =
[[[[[self regData] ShoppingCart] objectForKey:@"Cart"]
valueForKey:@"Model"] objectAtIndex:indexPath.row];
// Configure the cell...
return cell;
}
我还没有实现didSelectRowAtIndexPath方法,因为该方法假设将查看器带到更新的屏幕并提供更多信息。
答案 0 :(得分:1)
您正在做的是每次显示单元格时都添加复选框,无论它是新单元还是重用单元格。
您不希望每次都这样做:
CheckBox *chkBox = [[CheckBox alloc] init];
chkBox.frame = CGRectMake(10.0, -10.0, 50.0, 70.0);
[cell.contentView addSubview:chkBox];
[chkBox release];
只有当它是一个新的单元格时才这样做...但是通过将复选框添加为子视图然后释放它,无论如何你都会失去对它的访问权限。要访问它,您需要迭代单元格的子视图,找到类型复选框,然后查看是否已选中。 如果您的CustomTableCell具有您设置的Checkbox属性会更好,因此您可以轻松访问它。