Objective c 用户选择时的多选行为与setSelected不同:动画:

Objective c 用户选择时的多选行为与setSelected不同:动画:,objective-c,ios,uitableview,Objective C,Ios,Uitableview,我有一个UITableView,可以显示通讯录中的联系人。我启用了多选编辑样式。当我呈现tableView时,它按预期工作。用户点击一行,填充单元格左侧的红色复选标记。太好了 我将这些选择保存在显示视图控制器的数组属性中。当我再次显示表格时,我希望这些单元格保持选中状态(即,不以蓝色突出显示,只是红色复选标记仍然填充)。在CellForRowatineXpath中:我在该索引路径处获取单元格的对象,测试显示视图控制器的数组是否包含该对象,如果包含该对象,则测试[cell setSelected:

我有一个UITableView,可以显示通讯录中的联系人。我启用了多选编辑样式。当我呈现tableView时,它按预期工作。用户点击一行,填充单元格左侧的红色复选标记。太好了

我将这些选择保存在显示视图控制器的数组属性中。当我再次显示表格时,我希望这些单元格保持选中状态(即,不以蓝色突出显示,只是红色复选标记仍然填充)。在CellForRowatineXpath中:我在该索引路径处获取单元格的对象,测试显示视图控制器的数组是否包含该对象,如果包含该对象,则测试
[cell setSelected:YES]

在我看来,这应该会产生与用户触摸单元格时相同的选定外观(只是红色复选标记)。取而代之的是,红色的复选框确实会填充,但单元格也会瞬间高亮显示蓝色,文本会永久变为白色,从而造成联系人姓名消失的印象。如果有帮助的话,我很乐意发布代码,但这似乎只是UITableView的一个怪癖,有人可能很熟悉? 编辑:此图像显示了我拥有(和想要)的复选标记类型。我无法拼凑,但为什么当我打电话给[cell setSelected:YES]时;它的行为与触摸时的行为不同。你在这里看到的是在我打电话给[cell setSelected:YES]之后;。它看起来几乎是我想要的,但是名字已经不见了。我不想在列表出现时突出显示单元格


如果我了解您想要的视觉效果,您应该使用
cell.accessoryType=UITableViewCellAccessoryCheckmark而不是
[选择的单元格设置:是]

此问题已解决。在我看来,我试图在cellForRowAtIndexPath中设置Selected是在给自己制造麻烦。也许表格视图对单元格的重复使用让它变得疯狂了

让单元格在多重选择样式表的显示之间正确选择的解决方案是将选定的索引存储在ViewWillEnglishe。我给了演示视图控制器一个属性
NSArray*selectedIndex
,并在视图中调用

[self.presentingViewController setselectedindex:[myTableView indexPathsForSelectedRows]]

然后在VIEWWILLISPEND中,我将该数组放入一个ivar中,对其进行迭代并调用
[myTableView selectRowForIndexPath:[selectedIndexes objectAtIndex:I]animated:YES]

这就成功了。感谢用户523234的评论。帮助我在正确的轨道上思考

对不起,我应该说得更清楚些。UITableViewAccessoryCheckmark在单元格的右侧创建一个复选标记。我要红色支票在左手边画一个圆圈。我有。当我调用setSelected:SelectRowatinIndexPath:animated:scrollPosition:这可能会起作用时,我的行为很奇怪?谢谢你的建议,但不会有相同的结果。