0

我之前在 iPhone 上遇到了与此类似的问题,但相同的解决方案似乎不适用于 iPad 环境。我的目标是调用我的方法forceReload,在我的 RootViewController 中定义,一旦模式被解除,它将从 DetailView 重新加载 RootView 中的 countdown_table 数据。forceReload直接从 RootViewController 调用时工作正常,但我似乎无法从 DetailView 指向 RootViewController。

我试过使用

RootViewController *root_view = [self.splitViewController.viewControllers objectAtIndex:0];
[root_view forceReload];
[root_view.countdown_table reloadData];

但这仅指向导航控制器,而不是其中的视图控制器。即使模式被解除,RootViewController 的viewWillAppear也不会触发。

我怎样才能指向这个文件?谢谢!

4

1 回答 1

7

尝试使用通知,即将 RootViewController 注册为您的 DetailView 或任何视图可能发送的通知的观察者。

在 RootViewController 的 viewDidLoad 中:

[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(forceReload) 
                                             name:@"reloadRequest" 
                                           object:nil];

viewDidUnload 或在 dealloc 中:

[[NSNotificationCenter defaultCenter] removeObserver:self];

在您的 DetailViewController 或模态视图中(您没有说它们是相同的),在您关闭视图之前或恰好在您需要 RootViewController 调用 forceReload 时放置:

NSNotification *notif = [NSNotification notificationWithName:@"reloadRequest" object:self];
[[NSNotificationCenter defaultCenter] postNotification:notif];
于 2011-06-25T21:58:55.827 回答