繁体   English   中英

选中时突出显示单元格

[英]Highlighting cell when selected

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

您可能想要使用UITableViewCellAccessoryCheckmark ,因为它是为此目的而设计的。

根据Apple开发人员文档,您应该选择多个行。

        cell.accessoryType = UITableViewCellAccessoryCheckmark;

并取消选择

        cell.accessoryType = UITableViewCellAccessoryNone;

正如其他人指出的那样,突出显示不是实现此目的的首选方法。 用户希望跨应用程序获得一致的体验,这就是《人机界面指南》建议使用复选标记指示行选择的原因: http : //developer.apple.com/library/ios/#documentation/userexperience/conceptual/mobilehig/UIElementGuidelines/UIElementGuidelines .html#// apple_ref / doc / uid / TP40006556-CH13-SW42 (表7-1)

除了引发UI问题外,您遇到的问题还可能是由于表单元被重用,并且保留了该单元中先前显示的记录中的突出显示状态。

我建议您为突出显示的索引保留单独的索引/ ID记录。 然后,您应该始终对此进行检查,而不是检查单元本身的状态。 (您可以根据需要使用NSArray或其他集合类)。

tableView:cellForRowAtIndexPath中:您还应该检查此数组并相应地设置突出显示的状态。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM