2011-06-25 59 views
0

我在iPhone上遇到過類似於此問題的問題,但同樣的解決方案似乎並不適用於iPad環境。我的目標是調用在我的RootViewController中定義的方法forceReload,該方法一旦模式被取消,將從RootViewView中的Countdown_table的數據重新加載到RootView中。 forceReload直接從RootViewController調用時工作正常,但我似乎無法指向指向DetailView的RootViewController。在MasterView中從DetailView重載數據

我使用

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

嘗試,但只點到導航控制器,而不是它裏面的視圖控制器。即使當模式被解僱時,RootViewController的viewWillAppear也不會觸發。

我該如何指向這個文件? 謝謝!

回答

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]; 
+0

你呢!這在我的應用程序中完美運行! – drfranks3

+0

我已經嘗試了相反的順序(從Master重新載入數據),但沒有運氣。對此有何建議? –

+0

@LukeIrvin,你可以爲此發佈代碼嗎?另外,細節視圖(Will | Did)中的reloadData不會出現嗎? – MarcoCabazal

相關問題