在未选择单元格时从UITableViewCell删除附件视图并在重新加载视图之间进行维护

时间:2014-03-31 13:16:26

标签: ios iphone uitableview accessoryview

我认为这是一个简单的问题,但我无法找到解决方案。

我有一个静态UITableView,有两个静态cells(浅色和深色)。

当用户选择其中一个单元格时,我会显示带有自定义图像的accessoryView。当用户选择另一个单元格时,我希望第一个单元格取消选择并删除自定义的accessoryView,并将其提供给secondCell。我希望这可以根据用户选择的单元格继续执行此操作。

同样重要的是,我需要确保选择"选择" cell在整个视图控制器的重新加载过程中维护accessoryView(使用NSUserDefaults)。

我该怎么做呢?我是iOS开发的新手。

这里是我的didSelectRow中的一些代码:

 BOOL isSelected;

if (cell.isSelected) {
    UIImageView *dot = [[UIImageView alloc]initWithFrame:CGRectMake(165, 10, 14, 15)];
    dot.image=[UIImage imageNamed:@"check-white-hi.png"];
    [cell addSubview:dot];
    cell.accessoryView = dot;
    isSelected = YES;
}
else {
    cell.accessoryView = nil;
    isSelected = NO;
}

从一个单元格中删除附件视图到另一个单元格,以及如何在应用程序的整个生命周期中保持这一点,我们真的很感激。

谢谢

1 个答案:

答案 0 :(得分:4)

在.h文件中创建一个属性

@property (nonatomic,retain)NSIndexPath * checkedIndexPath ;

在您的.m文件中合成

@synthesize checkedIndexPath;

在didSelectRowAtIndexPath方法中编写此代码

if(self.checkedIndexPath)
{
   UITableViewCell* uncheckCell = [tableView
                                    cellForRowAtIndexPath:self.checkedIndexPath];
    uncheckCell.accessoryType = UITableViewCellAccessoryNone;
}
if([self.checkedIndexPath isEqual:indexPath])
{
    self.checkedIndexPath = nil;
}
else
{
   UITableViewCell* cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
    self.checkedIndexPath = indexPath;
}
相关问题