如何用UISplitViewController获取master view controller detail视图控制器



我有一个带有主控制器和详细控制器的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 ?
} 

我会用通知代替,所以在你的主目录中:

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

虽然jjv360的答案很有帮助,但有些人肯定希望将值传递给被调用的方法。下面的教程对我有帮助:

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

要传递值value,您需要将value暴露为发送通知的类中的属性。接收方法需要将(id)强制转换为公开value的类。

相关内容

  • 没有找到相关文章

最新更新