2011-04-18 138 views
1

我已经得到了具有从核心数据填充的UITableView一个iphone项目..用复选标记的UITableView细胞

当选择一个小区,则用户被定向到一个新的视图控制器(见下文代码线)这显示有关该单元项的附加信息(从核心数据)

[self presentModalViewController:noteViewController animated:YES] 

我想要做的是能设置在每个单元的两侧某种复选标记来表示任务是否完成的不完整..

我已阅读t帽子我能做到这一点使用:

UITableViewCellAccessoryCheckmark 

,但我不知道如何实现是目前

didSelectRowAtIndexPath: 

被用来展示模态视图控制器..

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

任何帮助将不胜感激!

回答

9

您需要从单元格演示文稿中追踪外部选定的行。这意味着,你的模型(你用来构建单元格的第一个地方)需要跟踪某种布尔值。一旦你有,你设置accessoryType到正确的类型。

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

这将是一些逻辑的在你的:

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

谢谢你的回复..我想我有点困惑在我的问题..形式我明白如果一个单元格被选中将显示/删除复选标记..但我希望复选标记是独立的感觉只有当选中复选标记时才会改变。有没有办法做到这一点?我将编辑我的原始帖子 – Ibz 2011-04-18 12:04:16

+0

这不意味着任何时候选择一个单元格,配件会变成?我不想让它每次都改变..只有在选中实际复选标记时才改变它..这是可能的吗? – Ibz 2011-04-18 12:08:20

+0

你能告诉我什么是你的条件,以及如何实现这个“数据”...谢谢 – swiftBoy 2012-08-10 12:42:32

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 
    } 

希望这有助于

UPDATE

这个tutorial会给你一个关于自定义表格视图单元格的基本信息。 另一个Reference

我认为this会给你解决方案。

+2

读取GUI的状态不是一个好主意:它违背了MVC(Model-View控制器)架构。 – 2011-04-18 12:03:16

+0

请检查原来的问题..我已经更新了更具体的信息...谢谢你的回答,虽然 – Ibz 2011-04-18 12:11:02

+1

我想你是在谈谈单元格中的一个自定义按钮 – visakh7 2011-04-18 12:11:44