请检查以下代码..
- (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中添加一个额外的成员来跟踪已检查和未检查的单元格,但是我只是想知道没有它的任何方法吗?
答案 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;
}
}
希望这会对你有所帮助。
一切顺利!!!