从DetailView在MasterView中重新加载数据

时间:2011-06-25 18:39:40

标签: objective-c ios4 xcode4 reloaddata

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

我尝试过使用

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

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

我如何指向此文件? 谢谢!

1 个答案:

答案 0 :(得分: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];