从详细视图刷新iPad主数据

4
我希望能够在我的应用程序的详细视图控制器中采取操作后,刷新主视图控制器上的表格。
在这种情况下,我在左侧(主)侧有一个订单表,可以钻取显示3个级别的订单:打开,挂起和发送。 因此,如果我“更改”订单的状态(将其挂起,取消挂起,发送等),我希望能够在主视图上反映出来。 有什么想法吗?
从详细视图控制器中的操作按钮中,我尝试过:
[[appDelegate.splitViewController.viewControllers objectAtIndex:0] reload];

并且

OrdersRootController *orc = [[OrdersRootController alloc] initWithNibName:@"Orders" bundle:nil];
orc = [appDelegate.splitViewController.viewControllers objectAtIndex:0];
[orc.tableView reloadData];

我尝试添加通知但是没有起作用。 我在awakeFromNib中添加了观察者:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshOrders:) name:@"OrderStatusChanged" object:odc];

并从订单发布:

[[NSNotificationCenter defaultCenter] postNotificationName:@"OrderStatusChanged" object:self];`

但是指定的选择器从未触发...我错过了什么吗?
3个回答

3

尽管您已经选择了一个答案..

在任何DetailView中都可以调用此函数:

UINavigationController *navController = self.splitViewController.viewControllers[0];
MasterViewController *controller = (MasterViewController *)navController.topViewController;

1

我会在细节视图中将一个引用(可能是在AppDelegate中)传递给主视图中的表格视图,并直接调用表格重新加载数据。

或者您可以使用通知,主视图发出一个通知,细节视图通过加载相应的数据来响应。


考虑一下通知。没怎么用过。我会研究一下... - Alan Carter
它们非常容易使用,您可以将自定义用户数据传递到一个字典中,非常方便。 - Devraj
我一定漏掉了什么…… - Alan Carter
我一定是漏掉了什么…… 我在awakeFromNib中添加了一个观察者: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(refreshOrders:) name:@"OrderStatusChanged" object:odc];并从订单中发布信息: [[NSNotificationCenter defaultCenter] postNotificationName:@"OrderStatusChanged" object:self];但指定的选择器从未触发…… 我漏掉了什么? - Alan Carter
哈!将通知观察器移动到viewDidLoad中,现在它像个冠军一样工作了!谢谢!@Devraj - Alan Carter

0
如果您正在使用默认的分屏视图控制器,您可以这样做。
[self.rootViewController.tableView reloadData];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接