【问题标题】:How to get master view controller in detail view controller with UISplitViewController?如何使用 UISplitViewController 获取详细视图控制器的主视图控制器?
【发布时间】:2015-01-27 21:36:51
【问题描述】:

我有一个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 ?
} 

【问题讨论】:

    标签: ios uisplitview


    【解决方案1】:

    我会改用通知,所以在你的主人:

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

    【讨论】:

    • 非常感谢。正是我想要的。太棒了!!
    • 完美的主意:)。非常感谢
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-14
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      • 2014-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多