Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何跟踪由tableView表示的列表中的选定项?_Ios_Objective C_Uitableview - Fatal编程技术网

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

Ios 如何跟踪由tableView表示的列表中的选定项?,ios,objective-c,uitableview,Ios,Objective C,Uitableview,如果我选择一行,并旋转设备,我有一个完全不同的方向布局。 我想跟踪最后选定的项目,在新布局中旋转后可以重新执行 因此,理想情况下,我应该存储数据源中每个单元格中表示的选定indexPath、选定的行号还是选定的模型对象 我尝试存储所选单元格,但重复使用时会产生问题。如果在新布局中使用相同的数据,我认为保存所选的indexPath就足够了。但是,如果您使用不同的数据,这意味着它可以位于不同的索引(如果您在旋转后进行一些处理),那么您也需要保存该数据 编辑 在为新方向创建新布局之前,请查找选定单元格

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

因此,理想情况下,我应该存储数据源中每个单元格中表示的选定indexPath、选定的行号还是选定的模型对象


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

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

编辑


在为新方向创建新布局之前,请查找选定单元格的选定索引并保存它。然后在
cellforrowatinexpath:
中,检查该索引是否存在,并将其状态设置为选中状态。希望对您有所帮助。

首先初始化
NSMutableArray*选择editems
。(在
viewDidLoad
中的alloc init)

didselectrowatinexpath
delegate方法中,选中

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]
}

希望这对您有所帮助。

保存选定的索引。如果要跟踪多个单元格,您可以在堆栈中跟踪它们,并根据需要推送和弹出。因此,您是说
[UITableView indexPathForSelectedRow]
在设备旋转后有所不同?听起来您需要在旋转前存储所选单元格的属性(足以在旋转后找到),取消选择,重新加载等,然后重新选择。如果单元中有模型对象,则这将变得更容易。“M,V,C,简单得像1,2,3”。唱吧。顺便说一句,我看到了你的个人资料。ur'skills'数组指针是NSMutableArray的指针,但@[]文字语法将为您提供immutableArray。只需添加对mutableCopy的调用!否则你将无法添加更多技能:P:P否则。。很好的风格@AmoghtalPalikar非常感谢-我将更新我的个人资料!:D如果索引也为0,则[selectedItems IndexOfoObject:indexPath]将为true。改用NSNotFound。这就是找不到对象时返回的内容。希望这对你有帮助。我只是想给出一个逻辑来满足你的要求。是的,你是对的,请查看我的最新答案。请查看问题下方特洛伊人的评论。我认为这是一个更好的办法。我们已经在维护模型的数据源。拥有另一个索引路径数组是没有意义的。模特应该有所有的信息。