2013-03-05 18 views
8

私はマスターコントローラとディテールコントローラとUISplitViewControllerありますUISplitViewControllerを使用して詳細ビューコントローラでマスタビューコントローラを取得するにはどうすればよいですか?

MyMasterController *masterViewController = [[[MyMasterController alloc] initWithDirectory:directoryElement] autorelease]; 
MyDetailController *detailViewController = [[MyDetailController alloc] init]; 

masterViewController.detailViewController = detailViewController; 

UISplitViewController *splitViewController = [[UISplitViewController alloc] init]; 
splitViewController.viewControllers = @[[[UINavigationController alloc] initWithRootViewController:masterViewController], [[UINavigationController alloc] initWithRootViewController:detailViewController]]; 
splitViewController.delegate = self; 

MyDetailControllerがテーブルリストビューコントローラである、私は、ユーザーがセルをクリックしたときにビューコントローラの実行一つの方法を習得したい、だから、どのようにマスターを取得することを詳細コントローラのコントローラ?

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    [master some_method]; // how to get ? 
} 

答えて

15

私はあなたのマスターに、代わりに通知を使用します。

-(void) viewDidLoad { 

    ... 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(someMethod) name:@"DoSomeMethod" object:nil]; 

} 

-(void) someMethod { 

    ... 

} 

そして、あなたの詳細:

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    [[NSNotificationCenter defaultCenter] postNotificationName:@"DoSomeMethod" object:nil]; 

} 
+0

私は良い考えだと思います – why

+0

ありがとうございました。まさに私が探していたもの。ブリリアント!! –

+0

完璧なアイデア:)。どうもありがとう –

0

jjv360s答えは多くのことができますが、一部は確実に値を渡したいです呼び出されたメソッドに渡します。 次のチュートリアルが私を助けている:

http://www.devfright.com/nsnotificationcenter-tutorial/

valueを渡すには、通知を送信クラスのプロパティとしてvalueを公開する必要があります。受信メソッドはを公開するクラスに(id)をキャストする必要があります。

関連する問題