我希望能够根据我的详细视图控制器中的操作刷新应用程序主控面上的表格。
在这种情况下,我在左侧(主)侧有一个订单表,向下钻取以显示3个级别的订单:Open,Held&发送。所以,如果我“改变”订单的状态(暂停,暂停,发送等),我希望能够在主方面反映出来。有任何想法吗?
从详细视图控制器中的操作按钮我尝试过:
1
[[appDelegate.splitViewController.viewControllers objectAtIndex:0] reload];
2
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];`
但指定的选择器永远不会触发。 。 。我错过了什么?
答案 0 :(得分:2)
虽然你已经选择了答案.. 在DetailView中的任何地方调用它:
UINavigationController *navController = self.splitViewController.viewControllers[0];
MasterViewController *controller = (MasterViewController *)navController.topViewController;
答案 1 :(得分:1)
我会将一个引用(可能在AppDelegate中)传递给详细视图中的表视图到主视图,并直接调用表重载数据。
或者您可以使用通知,主视图会引发通知,详细视图会通过加载相应的数据来响应。
答案 2 :(得分:0)
如果您使用的是默认的splitview控制器,则可以执行此操作
[self.rootViewController.tableView reloadData];