帮我复选框的复选标记已隐藏

时间:2011-03-14 06:00:26

标签: iphone uitableview iphone-sdk-3.0

请查看以下代码段。我将复选框放入我的单元格,我可以选中或取消选中该复选框。但是当我滚动表格视图时,复选框的复选标记会被隐藏 我的意思是我通过设置图像来设置复选标记。

请有人帮我解决这个问题。

感谢您的时间。

// 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;
    }

2 个答案:

答案 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中创建属性并合成和分配...肯定会工作......