2012-02-16 13 views
1

私はXcode 4とiOS5を使って簡単なiPadアプリケーションを作成しています。MasterViewControllerとDetailViewControllerを同期させておく

私はUISplitViewControllerを使用してマスタービューと詳細ビューを管理しています。マスターからディテールまですべてがうまくいっています。リストからアイテムを選択し、デリゲートを使用して詳細ビューを更新します。

詳細ビューのボタンを使用してアイテムを削除したいと考えています。これは詳細ビューで非常に簡単です。しかし、アイテムが削除されたという事実を反映するためにマスタービューを変更する方法を理解できないようです。

基本的にデリゲートパターンは片方向にしか見えません。マスターからディテールまで、ディテールからマスターまでではありません。詳細からマスターにメッセージを渡す方法はありますか?

答えて

1

NSNotificationsで行うことができます。 MasterViewControllerのあなたのviewDidLoadで

#define ReloadMasterTableNotification @"ReloadMasterTableNotification" 

:MasterViewControllerののdeallocで

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reloadMasterTable:) name:ReloadMasterTableNotification object:_detailViewController]; 

あなたはARC使用している場合:あなたが通知するdetailViewControllerであなたの更新をしたい場合は

[[NSNotificationCenter defaultCenter] removeObserver:self name:ReloadMasterTableNotification object:nil]; 

をMasterViewController:

- (IBAction)onButtonPress { 
     NSIndexPath *path = [NSIndexPath indexPathForRow:indexToUpdate inSection:0]; 
     NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:path, @"IndexPath", nil]; 
     [[NSNotificationCenter defaultCenter] postNotificationName:ReloadMasterTableNotification object:self userInfo:dict]; 
} 

- (void)reloadMasterTable:(NSNotification *)notification { 
    NSDictionary *dict = [notification userInfo]; 
    NSIndexPath *path = [dict objectForKey:@"IndexPath"]; 
    // update MasterViewController here 
} 

希望に役立ちます!

関連する問題