2012-03-21 63 views
8

我在iOS5.1应用程序时,我真想为什么启用UITableView.allowsMultipleSelection时复选标记不显示?

self.tableView.allowsMultipleSelection=YES; 

苹果文档状态“。当这个属性的值是YES,复选标记旁边被窃听的每一行放置一个UITableView。攻丝该行再次删除复选标记。“

我可以选择多行作为背景设置为蓝色。但是,不显示复选标记。是否需要按如下所示在didSelectRowAtIndexPath中设置复选标记,因为我使用自定义UITableViewCells?

cell.accessoryType = UITableViewCellAccessoryCheckmark; 
+1

我有完全该同样的问题。你找到了解决这个问题的方法吗?请告诉我。 – AlexR 2012-06-17 12:40:21

+0

和AlexR在这里一样的问题。 “我有同样的问题,所以我决定忽略它并自己重新实现这个功能”的答案并不令人满意。 – Tommy 2013-11-14 00:07:42

回答

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

谢谢。这是我以前做过的,但从Apple文档看来,它会在iOS5 +中自动发生。我现在用这种方式实现了它。但是,可能存在一个错误,我试图追踪与某些情况下自动显示复选标记相关的问题。 – ChrisP 2012-04-04 16:26:49

+1

啊,好的。是的,我同意从文档看来应该自动处理选中标记。也许这只是暗示这将是适当的指导方针?无论如何,我同意这是一个错误或文档应该重新编写。 – daltoniam 2012-04-09 21:31:19

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; 

}

+0

如果你这样做,复选框将显示在右边而不是左边。 – 2013-01-17 08:40:49

相关问题