【问题标题】:How to set properties of a root view controller before being presented?如何在呈现之前设置根视图控制器的属性?
【发布时间】:2015-09-12 08:23:17
【问题描述】:

我在storyboard 中有某个UINavigationController 我从另一个视图控制器模态呈现:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UINavigationController *myNavController = [storyboard instantiateViewControllerWithIdentifier:@"myNavController"];
[self presentViewController:myNavController animated:YES completion:nil];

这个导航控制器在storyboard 中设置了另一个UIViewController 作为它的根视图控制器。我想在这个根视图控制器显示之前为其设置一些属性,但我尝试了这个:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UINavigationController *myNavController = [storyboard instantiateViewControllerWithIdentifier:@"myNavController"];
[self presentViewController:myNavController animated:YES completion:nil];
 MyRootViewController *myRootViewController = [storyboard instantiateViewControllerWithIdentifier:@"myRootViewController"];
[myRootViewController setSelectedItem:selectedItem];
[myRootViewController setDelegate:self];

但是当我尝试设置它的属性时,似乎还没有加载根视图控制器...

我怎么能这样做?谢谢

【问题讨论】:

    标签: ios uinavigationcontroller segue presentviewcontroller rootview


    【解决方案1】:

    如果你调试过,你会发现MyRootViewController *myRootViewController = [storyboard instantiateViewControllerWithIdentifier:@"myRootViewController"]; 制作的myRootViewController并不是myNavController真正的rootViewController。

    这个方法-instantiateViewControllerWithIdentifier: 只是给你一个全新的 UIViewController 实例。

    所以,如果你想获得真正的 rootViewController,只需将其替换为以下内容:

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UINavigationController *myNavController = [storyboard instantiateViewControllerWithIdentifier:@"myNavController"];
    
     MyRootViewController *myRootViewController = myNavController.viewControllers[0];
    [myRootViewController setSelectedItem:selectedItem];
    [myRootViewController setDelegate:self];
    
    [self presentViewController:myNavController animated:YES completion:nil];
    

    【讨论】:

      猜你喜欢
      • 2011-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多