[英]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.