从UITableView保存多个值

我有一个UIViewController调用4 UITableViewControllers作为其子视图。

这些表视图启用了附件复选标记,并可以在表中select多行。

我的问题是,当我的UIViewController与所有的tableview显示,我想保存每个tableview选定的值,并将其保存在一个数组或其他东西。

我也想在另一个类中使用这些选定的值,我必须显示所有这些选定的值。

任何人都可以帮助我如何保存不同tableview的多个值,并在另一个类中使用这些值?

只要使用indexPathsForSelectedRows 。 但是这个指令将返回多个indexPath

也就是说,Xcode有一个很好的自动完成function,你可以开始键入“index”,它会直接显示indexPathsForSelectedRows ,你也可以参考Xcode提供的优秀文档。 我希望它会帮助你!

更新1 – 如何从数组中获取indexPaths

indexPathsForSelectedRows方法将返回一个NSIndexPath对象数组,每个对象对应一个选定的项目。 如果没有选定的项目,这个方法返回一个空的数组。

现在要访问这个对象,你必须问自己,如何访问数组? 你做了一些研究,然后你会得出这个结论:

 NSArray *arrayOfIndexPathsTableOne = [self.myTableViewOne indexPathsForSelectedRows]; //Then you can iterate through the array and doWhatever you like. for(int i = 0; i < [arrayOfIndexPathsTableOne count]; i++){ NSIndexPath *indexPathImInterestedIn = [arrayOfIndexPathsTableOne objectAtIndex:i]; //If you do actually have a tableViewController then call [self cellFor...]; instead of self.myTableViewOne UITableViewCell *currentCell = [self.myTableViewOne cellForRowAtIndexPath:indexPathImInterestedIn]; //you can grab the data you need from this cell and do whatever you like //I would suggest you grab the data from the datasource instead of the cell, since your datasource should contain the datamodel where you can extract the information you need. //Or if its just one value from the cell you want to grab you could do [myGlobalArray addObject:[NSString stringWithObject:@"%@", currentCell.textLabel.text]]; //your value } //Voila 

你如何在你的父视图控制器中托pipe这些表视图控制器? 如果你使用的是故事板,最简单的方法就是使用embedded式的segue。

然后,在prepareForSegue中,可以保存指向每个子表视图控制器的指针。

我会build议devise一个协议,让父视图控制器询问子表视图控制器的选定项目列表。 或者,您可以将父视图控制器设置为每个表视图控制器的委托,并创build用户更改当前选定项目时通知父项的委托方法。

我有一个github上的示例项目,它有一个父视图控制器托pipe2个表视图控制器,其中父视图控制器和子视图控制器都使用协议相互通信。 点击此链接检查出来

演示项目使用embeddedseguespipe理多个静态表视图

请注意,对于单个表视图,indexPathsForSelectedRows方法将返回表视图中所有选定项的数组。