我通过点击当前控制器的单元格来初始化一个新的视图控制器。我想通过引用将单元格中的对象传递给下一个控制器,以便在新控制器中更改对象时,它应该在原始位置更改。
我已经竭尽全力获得有关此问题的答案,但是却无济于事。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
NSString * storyboardName = @"Main";
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle: nil];
RecentItemDetailViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"RecentItemDetailViewController"];
vc.station = self.stations[indexPath.row];
[self.navigationController pushViewController:vc animated:YES];
}
我想通过引用获取self.stations[indexPath.row]
中的vc.station
对象,因此,如果我更改了vc.station
,那么self.stations[indexPath.row]
也应该更改。
self.stations
和vc.station
均为NSMutableArray
类型。
答案 0 :(得分:2)
您已经正确执行了。您最有可能丢失的是回来时重新加载表视图。
您可以覆盖视图将出现的方法。然后检查表视图中的选定行是什么。重新加载该行。
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
if(self.tableView.indexPathForSelectedRow) {
[self.tableView reloadRowsAtIndexPaths:@[tableView.indexPathForSelectedRow] withRowAnimation:UITableViewRowAnimationAutomatic];
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
}
// Or just reload the whole thing
[self.tableView reloadData];
}
但这自然假设您永远都不会分配给station
内的RecentItemDetailViewController
属性。您可以叫[self.station add...]
之类的东西,但不能叫self.station = ...
。