如何跟踪tableView表示的列表中的选定项?

时间:2013-07-03 05:36:08

标签: ios objective-c uitableview

如果我选择一行并旋转设备,我会有一个完全不同的方向布局。 我想跟踪最后选择的项目,我可以在新布局中旋转后重新执行。

那么,我是否应该理想地存储所选的indexPath,选定的行号或从dataSource在每个单元格中表示的所选模型对象?

我尝试存储选定的单元格,但重新使用时会产生问题。

2 个答案:

答案 0 :(得分:2)

如果对新布局使用相同的数据,我认为保存选定的indexPath就足够了。但是如果你使用不同的数据,意味着它可以处于不同的索引(如果你在旋转后做一些处理),那么你也需要保存它。

修改

在为新方向创建新布局之前,找到所选单元格的选定索引路径并保存。然后在cellForRowAtIndexPath:中,检查它是否存在于该indexPath并使其状态为选中状态。希望它可以帮到你。

答案 1 :(得分:0)

首先初始化NSMutableArray *selectedItems。 (viewDidLoad中的alloc-init)

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进行单元格初始化时,

首先绘制一个包含所有属性的正常单元格,最后检查:

if ([selectedItems indexOfObject:indexPath] != NSNotFound)  // if current indexpath is selected
{
     // then display your selected cell [checkbox or different bg color as per your requirements]
}

希望这会对你有所帮助。