带CheckMarks的UITableView单元格

Ibz*_*Ibz 1 iphone xcode uitableview

我有一个iphone项目,其中包含一个UITableView从Core Data填充的项目.

选择单元格后,用户将被定向到新的视图控制器(请参阅下面的代码行),该控制器显示有关该单元格条目的其他信息(来自核心数据)

[self presentModalViewController:noteViewController animated:YES]
Run Code Online (Sandbox Code Playgroud)

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

我已经读过我可以这样做:

UITableViewCellAccessoryCheckmark
Run Code Online (Sandbox Code Playgroud)

但我不确定如何实施是目前的

didSelectRowAtIndexPath:
Run Code Online (Sandbox Code Playgroud)

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

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

任何帮助将不胜感激!

Mar*_*ell 9

您需要从Cell表示中外部跟踪所选行.这意味着,您的模型(您以前用于构建单元格)将需要跟踪某种布尔值.一旦你有了,你就设置accessoryType了正确的类型.

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

这将是你的一些逻辑:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Run Code Online (Sandbox Code Playgroud)


vis*_*kh7 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
  }
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助

UPDATE

教程将为您提供有关自定义表格视图单元格的基本信息.另一个参考.

我想会给你解决方案.

  • 从GUI中读取状态并不是一个好主意:它违背了MVC(模型 - 视图 - 控制器)架构的原则. (2认同)