我有一个tableView,我可以选择多个记录。当我点击多1个记录时,单元格应该突出显示。我在下面附上了我的代码;现在的最重要的是,当我点击多个记录时,它会突然显示,但是当我尝试将其删除时(如再次点击同一行),不同的单元格会突出显示。这是为什么?
但如果我用[cell setHighlighted:YES animated:YES/NO];
替换[cell setAccessoryType:UITableViewCellAccessoryCheckmark];
,一切正常。我该如何解决这个问题?
我在didSelectRowAtIndexPath
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if ([cell accessoryType] == UITableViewCellAccessoryNone) {
[cell setHighlighted:YES animated:YES];
}
else {
[cell setHighlighted:NO animated:YES];
}
答案 0 :(得分:3)
您可能希望使用UITableViewCellAccessoryCheckmark
,因为它是用于此目的。
答案 1 :(得分:2)
根据Apple开发人员文档,您应该使用多行选择。
cell.accessoryType = UITableViewCellAccessoryCheckmark;
并取消选择
cell.accessoryType = UITableViewCellAccessoryNone;
答案 2 :(得分:1)
正如其他人所说,突出显示不是首选方法。用户希望跨应用程序获得一致的体验,这就是人机界面指南建议使用复选标记来指示行选择的原因:http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/mobilehig/UIElementGuidelines/UIElementGuidelines.html#//apple_ref/doc/uid/TP40006556-CH13-SW42(表7-1)
答案 3 :(得分:0)
除了引发的UI问题之外,您遇到的问题可能是由于您的表格单元格被重复使用,并且保留了之前在该单元格中显示的记录中突出显示的状态。“ / p>
我建议您为突出显示的索引/ id保留单独的记录。然后,您应该始终检查这一点,而不是单元格本身的状态。 (您可以根据需要使用NSArray或其他集合类。)
在 tableView:cellForRowAtIndexPath:中,您还应检查此数组并相应地设置突出显示的状态。