带CheckMarks的UITableView单元格

时间:2011-04-18 11:52:45

标签: iphone xcode uitableview

我有一个iphone项目,其中UITableView是从Core Data填充的。

当选择一个单元格时,用户将被定向到一个新的视图控制器(参见下面的代码行),该控制器显示有关该单元格条目的附加信息(来自核心数据)

[self presentModalViewController:noteViewController animated:YES]

我想要做的是能够在每个单元格的任一侧设置某种复选标记,以表示任务是否完整不完整。

我已经读过我可以使用以下方式执行此操作:

UITableViewCellAccessoryCheckmark

但我不确定如何实施当前

didSelectRowAtIndexPath:

用于呈现模态视图控制器..

所以基本上我想知道是否有一种方法可以独立地将单元格附件的状态从复选标记更改为空(反之亦然)......在某种意义上,如果实际的复选标记是触摸的......它会显示它。如果再次触摸它,它会隐藏它..

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:9)

您需要从Cell演示文稿外部跟踪选定的行。这意味着,您的模型(您以前用于构建单元格)将需要跟踪某种布尔值。完成后,将accessoryType设置为正确的类型。

if ([[data objectAtIndex:indexPath.row] isSelected]) {
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
} else {
    cell.accessoryType = UITableViewCellAccessoryNone;
}

这将是你的一些逻辑:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

答案 1 :(得分:6)

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];

  if (selectedCell.accessoryType == UITableViewCellAccessoryNone)
  {
    selectedCell.accessoryType = UITableViewCellAccessoryCheckmark;
  }
  else 
  if (selectedCell.accessoryType == UITableViewCellAccessoryCheckmark)
  {
   selectedCell.accessoryType = UITableViewCellAccessoryNone;
  }
   //Do something
  }

希望这有帮助

<强>更新

tutorial将为您提供有关自定义表格视图单元格的基本信息。 另一个Reference

我认为this会为您提供解决方案。