我有一个我正在使用的桌面视图
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark;
}
我有一个NSArray * selectedDiscounts我已按此分配
selectedDiscounts = [self.tableView indexPathsForSelectedRows];
我必须将选定的表行数据传递给另一个控制器,在那里我将使用选定的行填充tableView。
问题是selectedDiscounts要么只保留选定的indexPaths而不保存数据?因为它显示了所选对象的数量,但没有显示所选单元格的数据。
我想将选定的行数据存储到NSArray变量中。那可能吗?谢谢你们。
答案 0 :(得分:0)
您的selectedDiscounts
数组显然已填充UITableView
方法indexPathForSelectedRows
。要存储所选行的实际数据,您需要先建立一个数组allDiscounts
,然后使用该数组填充第一个表视图。然后,当您显示allDiscounts
中的所有对象并想要选择一些并存储数据时,请执行以下操作:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[selectedDiscounts addObject:[allDiscounts objectAtIndex:indexPath.row]];
}
答案 1 :(得分:0)
您需要遍历所有索引路径并自行获取数据。
NSMutableArray *array = [[NSMutableArray alloc] init];
for (NSIndexPath *indexPath in selectedDiscounts) {
// Assuming self.data is an array of your data
[array addObject: self.data[indexPath.row]];
}
现在您的NSArray包含您可以传递给下一个控制器的数据。
答案 2 :(得分:0)
我将处理此问题的方法是在要传递数据的视图控制器上创建自定义初始化方法。像这样:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSArray *selectedDiscounts = yourDataSource[indexPath.row];
NewViewController *newVC = [[NewViewController alloc] initWithSelectedDiscounts:selectedDiscounts];
self.navigationController pushViewController:newVC animated:YES];
}
另一种方法是在第二个视图控制器上创建一个属性,该属性是您要传递的数组/字典,当他们选择行时,获取该行的信息,并在您之前将其设置在视图控制器上推/出来。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSArray *selectedDiscounts = yourDataSource[indexPath.row];
NewViewController *newVC = [[NewViewController alloc] initWith...// whatever you use for the initializer can go here...
newVC.discounts = selectedDiscounts;
self.navigationController pushViewController:newVC animated:YES];
}