0

请检查下面的代码..

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   // I may use this object to maintain check state.
    ab_user_info *obj = nil;
    obj = [self.listData objectAtIndex: [indexPath row]];

    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    cell.accessoryType = UITableViewCellAccessoryCheckmark;

    [contact_table reloadData]; 
}

根据上面的代码,我已经检查了我点击的所有表格,我应该怎么做才能再次取消选中,我知道我应该将附件类型更改为无,但是什么时候,我怎么知道以前它被检查过?是否有任何 API 可以告诉我们单元格的辅助类型。

我已经在其他表格视图中通过在我的模态 obj 中添加一个额外的成员来跟踪选中和未选中的单元格,但是我只是想知道有什么办法没有吗?

4

3 回答 3

3
 UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    if (cell.accessoryType == UITableViewCellAccessoryCheckmark)
    {
        cell.accessoryType = UITableViewCellAccessoryNone;
    }
    else
    {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    }
于 2013-03-22T06:23:22.607 回答
1

tableView 是一个 Data Presenter 视图对象

TableView 仅用于“显示”数据,它不是数据的管理器或跟踪器。您需要在后端跟踪数据的属性。我的意思是,如果您想跟踪哪些行被选中或未选中,它不能由 TableView 管理,您需要使用 NSArray 或任何其他对象类型来处理它。

于 2013-03-22T06:21:20.143 回答
1

试试下面的代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        // I may use this object to maintain check state.
        ab_user_info *obj = nil;
        obj = [self.listData objectAtIndex: [indexPath row]];
        
        UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
        if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
            cell.accessoryType = UITableViewCellAccessoryNone;
        }else{
            cell.accessoryType = UITableViewCellAccessoryCheckmark;
        }
        
    }
于 2013-03-22T06:22:54.510 回答