任何人都可以解决我的问题。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
if([self.selectedIndexPaths containsObject:indexPath]){
[self.selectedIndexPaths removeObject:indexPath];
NSLog(@"selectedIndexPaths1 :%@",self.selectedIndexPaths);
} else {
[self.selectedIndexPaths addObject:indexPath];
NSLog(@"selectedIndexPaths2 :%@",self.selectedIndexPaths);
}
[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
如何将选定的行(选定的IndexPaths)传递到另一个视图控制器,该tableview(视图控制器)仅显示选定的行?
答案 0 :(得分:0)
创建新视图控制器时
MyNextViewController *myNextViewController = [MyNextViewController alloc] init];
在下一个视图控制器中有一个方法,它接受selectedIndexPaths的参数。
[myNextViewController setIndexesOfRowsToPresent:self.selectedIndexPaths];
并且在新的视图控制器中,假设您拥有用于填充表的数据模型,请使用它来执行必要的操作。
否则,在原始视图控制器中,而不是创建selctedIndexPaths数组,创建另一个数据数组,以便在下一个视图控制器中显示并传递该数组。这样,您无需在新视图控制器中进行任何操作。您只需传递要显示的数据,并在viewWillAppear上,它将自动正确显示该表。
[myNextViewController setData:mySelectedDataArray];
甚至更好地将它放在新视图控制器的alloc init中。