如何获取UItableViewCell的accessoryType?

时间:2013-03-22 06:19:45

标签: iphone ios cocoa-touch uitableview

请检查以下代码..

- (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中添加一个额外的成员来跟踪已检查和未检查的单元格,但是我只是想知道没有它的任何方法吗?

3 个答案:

答案 0 :(得分:3)

 UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    if (cell.accessoryType == UITableViewCellAccessoryCheckmark)
    {
        cell.accessoryType = UITableViewCellAccessoryNone;
    }
    else
    {
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
    }

答案 1 :(得分:1)

tableView是一个Data Presenter视图对象

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

答案 2 :(得分: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;
        }


    }

希望这会对你有所帮助。

一切顺利!!!