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

我有我认为是一个简单的问题,但我找不到解决办法。

我有一个静态UITableView与两个静态cells (光和黑暗)。

当用户select其中一个单元格时,我正在显示具有自定义图像的accessoryView。 当用户select另一个单元格时,我希望第一个单元格取消select并删除自定义的附件视图并将其提供给secondCell。 我希望这个不断做这取决于用户select哪个单元格。

同样重要的是,我需要确保“selected”单元在整个重载视图控制器的过程中(使用NSUserDefaults )来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; } 

任何协助将真正赞赏从附件视图从一个细胞和其他,以及如何保持这一贯穿整个应用程序的生命周期。

谢谢

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

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