0

以前にiPhoneでこれと同様の問題が発生しましたが、同じ解決策がiPad環境に適用されないようです。私の目標はforceReload、RootViewControllerで定義されたメソッドを呼び出すことです。このメソッドは、モーダルが閉じられると、DetailViewからRootViewのcountdown_tableのデータを再読み込みします。forceReloadRootViewControllerから直接呼び出された場合は正常に機能しますが、DetailViewからRootViewControllerを指しているようには見えません。

使ってみました

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

ただし、これはナビゲーションコントローラを指しているだけであり、内部のビューコントローラを指しているわけではありません。モーダルが閉じられている場合でも、RootViewControllerのviewWillAppearは起動しません。

このファイルをポイントするにはどうすればよいですか?ありがとう!

4

1 に答える 1

7

通知を使用してみてください。つまり、DetailViewまたは任意のビューが送信する可能性のある通知のオブザーバーとしてRootViewControllerを登録します。

RootViewControllerのviewDidLoad:

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

viewDidUnloadまたはdealloc:

[[NSNotificationCenter defaultCenter] removeObserver:self];

また、DetailViewControllerまたはモーダルビュー(同じであるとは言わなかった)で、ビューを閉じる直前、またはforceReloadを呼び出すためにRootViewControllerが必要な場合にこれを配置します。

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