8

私は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 ?
} 
4

2 に答える 2

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

} 
于 2013-03-05T09:25:24.030 に答える
0

jjv360 の回答は非常に役立ちますが、呼び出されたメソッドに値を渡したいと思う人もいます。次のチュートリアルは私を助けました:

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

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

于 2014-10-31T11:21:09.540 に答える