自定义选中行的复选标记

我在“UITableViewCell”中使用自定义图像作为复选标记 – “iphone-checkMark@2x.png”,但它显示在单元格的任何位置。 任何人都可以build议如何使其仅显示单个选定的单元格?

这是我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10,10, 300, 30)]; [cell.contentView addSubview:label]; label.text = [tableArr objectAtIndex:indexPath.row]; label.font = [UIFont fontWithName:@"Whitney-Light" size:20.0]; label.tag = 1; UIImageView *checkmark = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"iphone-checkMark@2x.png"]]; cell.accessoryView = checkmark; return cell; } 

代码越less越好:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (!cell) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; [cell setSelectionStyle:UITableViewCellSelectionStyleNone]; } cell.textLabel.text = [tableArr objectAtIndex:indexPath.row]; cell.textLabel = [UIFont fontWithName:@"Whitney-Light" size:20.0]; return cell; 

}

更新:

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { lastIndexPath = indexPath; [tableView reloadData]; } - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { if ([lastIndexPath isEqual:indexPath]) { cell.accessoryView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"iphone-checkMark.png"]]; } else { cell.accessoryView = nil; } } 

更新2:

 //dont forget check for nil NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; [defaults setValue:lastIndexPath forKey:@"lastIndexPath"]; [defaults synchronize]; 

 NSIndexPath *lastPath = [defaults valueForKey:@"lastIndexPath"]; 

一种方法来实现你想要做的是使用一个button,并设置背景图像作为您的checkbox。 这个button将是你的accessoryView。 监视button上的触摸事件并相应地显示布尔值。 以下链接中的示例项目将提供您需要实现的所有代码。 https://developer.apple.com/library/ios/#samplecode/Accessory/Introduction/Intro.html