我在iOS5.1应用程序中有一个UITableView,我设置了
self.tableView.allowsMultipleSelection=YES;
Apple文档说明“当此属性的值为YES时,会在每个被点击的行旁边放置一个复选标记。再次点击该行会删除复选标记。”。
我可以选择多行,因为背景设置为蓝色。但是,不显示任何复选标记。复选标记是否需要在didSelectRowAtIndexPath中如下所示进行设置,因为我使用的是自定义UITableViewCells?
cell.accessoryType = UITableViewCellAccessoryCheckmark;
答案 0 :(得分:5)
我在uitableviewcell子类中手动执行复选标记。您将不得不在didSelectRowAtIndexPath中手动执行UITableViewCellAccessoryCheckmark并跟踪选择哪一个。我会推荐这样的东西:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell* cell = [tableview cellAtIndex:indexPath];
if(cell.accessoryType == UITableViewCellAccessoryCheckmark)
cell.accessoryType = UITableViewCellAccessoryCheckmark;
else
cell.accessoryType = UITableViewCellAccessoryNone;
}
注意:我没有测试过这个,但应该给你一个基本的想法。如果您有任何疑问,请告诉我。您是否尝试使用默认的uitableviewcell并查看它是否带有复选标记?我不认为子类会有问题,只要你不在子类中进行修改。
答案 1 :(得分:1)
另一个选择是使用tableView:didDeselectRowAtIndexPath:除了tableView:didSelectRowAtIndexPath:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
cell.accessoryType = UITableViewCellAccessoryNone;
}