请查看以下代码段。我将复选框放入我的单元格,我可以选中或取消选中该复选框。但是当我滚动表格视图时,复选框的复选标记会被隐藏 我的意思是我通过设置图像来设置复选标记。
请有人帮我解决这个问题。
感谢您的时间。
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"en"] autorelease];
cb = [[UIButton alloc] initWithFrame:CGRectMake(5,10, unselectedImage.size.width, unselectedImage.size.height)];
[cb setImage:unselectedImage forState:UIControlStateNormal];
[cb setImage:selectedImage forState:UIControlStateSelected];
[cb addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchDown];
[cell.contentView addSubview:cb];
}
if ( tableView == myTableView )
{
titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(60, 0, 150, 35)];
titleLabel.font = [UIFont boldSystemFontOfSize:13];
titleLabel.textColor = [UIColor blackColor];
[cell.contentView addSubview:titleLabel];
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}
return cell;
}
答案 0 :(得分:1)
取自here
如果我正确理解了TableView概念,则需要在其他位置保存复选标记设置。如果您的单元格被滚动到视图之外,TableViewController可能会释放该单元格。然后,当您被要求在委托中重新创建单元格时,您必须以与以前相同的状态恢复它。
答案 1 :(得分:0)
在DidSelectRowAtindexPath
:
if ([set containsObject:indexPath])
{
[set removeObject:indexPath];
}
else
{
[set addObject:indexPath];
}
和CellForRpwAtIndexPath
:
if ([set containsObject:indexPath])
{
cell.imgView.image=[UIImage imageNamed:@"chealBox1.png"];
}
else
{
cell.imgView.image=[UIImage imageNamed:@"chealBox2.png"];
}
这里设置为NSMutableSet
,你必须在viewDidLoad中创建属性并合成和分配...肯定会工作......