这里是tableView数据源和委托实现,我设置的最大选择是5。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
...
if ([multiOptions count] > 5) {
[self tableView:tableView didDeselectRowAtIndexPath:indexPath];
cell.accessoryType = UITableViewCellAccessoryNone;
cell.selected = NO;
//show alert
}
...
}
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
{
...
[multiOptions removeObject:selectedOption];
...
}
但这里有一个问题,如果选项超过限制,第一次单击单元格就可以正常工作。但第二次单击时,单元格将调用
didDeselectRowAtIndexPath
再一次,这不是我所期望的,我试过了
[tableView deselectRowAtIndexPath:indexPath animated:YES];
在didSelectRowAtIndexPath中,它不工作,谁能给我一个提示,如何纠正它?谢谢。
发布于 2014-06-24 15:42:52
您必须在tableView:willSelectRowAtIndexPath:
中检查此内容
看一下UITableView class reference,特别是最后一句:
返回值确认或更改选定行的索引路径对象。如果希望选择另一个单元格,则返回indexPath以外的NSIndexPath对象。如果不想选择行,则返回nil。
因此,类似这样的内容将在tableView:willSelectRowAtIndexPath:
中运行
if ([multiOptions count] > 5) return nil;
https://stackoverflow.com/questions/24381005
复制相似问题