选中时突出显示单元格
我有一个tableView,我可以选择多个记录。当我点击更多的1记录单元格应该突出显示。我在下面附上我的代码;现在有什么值得注意的是,当我点击多个记录时,它很重要,但是当我尝试删除它时(如同样再次点击同一行),不同的单元格将变为不突出显示。为什么是这样 ?选中时突出显示单元格
但是,如果我用[cell setAccessoryType:UITableViewCellAccessoryCheckmark];
替换[cell setHighlighted:YES animated:YES/NO];
一切正常。我怎样才能解决这个问题 ?
我加入的代码在didSelectRowAtIndexPath
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if ([cell accessoryType] == UITableViewCellAccessoryNone) {
[cell setHighlighted:YES animated:YES];
}
else {
[cell setHighlighted:NO animated:YES];
}
你可能想使用UITableViewCellAccessoryCheckmark
,因为它是用于这一目的。
根据苹果开发者文档选择多个行应该使用。
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问题,您遇到的问题可能是是由于您的表格单元格被重复使用,并保留之前在该单元格中显示的记录中突出显示的状态。
我建议你为高亮显示的那些记录索引/编号。你应该总是检查这个,而不是细胞本身的状态。 (您可以根据您的需要使用NSArray或其他集合类)。
tableView:cellForRowAtIndexPath:您还应该检查此数组并相应地设置突出显示的状态。
如果我用我自己的方式,会是一个问题吗?该应用会被appStore拒绝吗? – Illep 2012-01-10 17:13:52
@Illep你更有可能被拒绝,但这取决于你如何使用自己的目的的程度 – blake305 2012-01-10 17:16:43
@ blake305,我不这么认为会因此而被拒绝。 – AAV 2012-01-10 17:18:59