选中时突出显示单元格

时间:2012-01-10 17:03:59

标签: iphone objective-c

我有一个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];
}

4 个答案:

答案 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:中,您还应检查此数组并相应地设置突出显示的状态。