如果我选择一行并旋转设备,我的方向布局将完全不同。我想跟踪最后选择的项目,在新布局中旋转后我可以重新做。
那么,理想情况下,我应该存储选定的 indexPath、选定的行号还是选定的模型对象在 dataSource 的每个单元格中表示?
我尝试存储选定的单元格,但重复使用时会产生问题。
如果我选择一行并旋转设备,我的方向布局将完全不同。我想跟踪最后选择的项目,在新布局中旋转后我可以重新做。
那么,理想情况下,我应该存储选定的 indexPath、选定的行号还是选定的模型对象在 dataSource 的每个单元格中表示?
我尝试存储选定的单元格,但重复使用时会产生问题。
如果您对新布局使用相同的数据,我认为保存选定的 indexPath 就足够了。但是,如果您以不同的方式使用数据,则意味着它可以位于不同的索引处(如果您在旋转后执行某些处理),那么您也需要保存它。
编辑
在为新方向创建新布局之前,找到选定单元格的选定索引路径并保存。然后在 中cellForRowAtIndexPath:
,检查它是否存在于该 indexPath 并使其状态为选中。希望它可以帮助你。
首先初始化一个NSMutableArray *selectedItems
. (分配初始化在viewDidLoad
)
在didSelectRowAtIndexPath
委托方法中,检查
if ([selectedItems indexOfObject:indexPath] == NSNotFound) // if not available
{
[selectedItems addObject: indextPath]
}
// if you are having deselect option as well then you can have else statement as well
else
{
[selectedItems removeObject: indexPath];
}
所以现在在你的cellForRowAtIndexPath
while 单元初始化中,
首先绘制一个具有所有属性的普通单元格,最后检查:
if ([selectedItems indexOfObject:indexPath] != NSNotFound) // if current indexpath is selected
{
// then display your selected cell [checkbox or different bg color as per your requirements]
}
希望这对您有所帮助。