【问题标题】:How and where would you use instantiateViewControllerWithIdentifier您将如何以及在何处使用 instantiateViewControllerWithIdentifier
【发布时间】:2012-03-28 19:15:40
【问题描述】:
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
                                                     bundle: nil];

MenuScreenViewController *controller = (MenuScreenViewController*)[mainStoryboard 
                                               instantiateViewControllerWithIdentifier: @"<Controller ID>"];

如果我必须确保当前视图是用标识符实例化的,我究竟应该在哪里编写这段代码?这意味着如果我在这个类上编写任何代码,它必须在这个视图控制器加载时出现?另外我将如何使用它?我不想创建 menuscreenviewcontroller 的实例。这意味着我必须说自我,但我使用了 self.view 并且不起作用。

【问题讨论】:

    标签: ios iphone ios5 ios4 uistoryboard


    【解决方案1】:

    您需要推送或展示您创建的视图控制器。您不能通过实例化直接更改控制器的视图。

    例如您需要使用此代码来触发转换(可能是按钮操作):

    MenuScreenViewController* controller = (MenuScreenViewController*)[ourStoryBoard instantiateViewControllerWithIdentifier:@"<Controller ID>"];
    
    controller.controlFlag = YES;
    controller.controlFlag2 = NO; // Just examples
    
    //These flags will be set before the viewDidLoad of MenuScreenViewController
    //Therefore any code you write before pushing or presenting the view will be present after 
    
    [self.navigationController pushViewController:controller animated:YES];
    // or [self presentViewController:controller animated:YES];
    

    【讨论】:

    • 谢谢。但是,如果我希望这个屏幕出现在启动屏幕之后,我会怎么做,因此我没有任何按钮或任何方式来触发转换?我只希望在启动画面完成加载后,此屏幕与此屏幕的相应代码同步。我没有启动屏幕的课程。它只是 default.png
    • 你可以使用 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;或者,您可以直接将该 viewController 设置为情节提要中的 rootView 控制器。只需拖动一个navigationController 并将您的viewController 设置为该navigationController 的rootViewController。如果您想在代码中执行此操作,您可以将此 viewController 设置为 rootViewController 或使用 rootViewController 构造函数创建一个 UINavigationController 并将您在上面创建的控制器作为参数。
    【解决方案2】:

    根据 Uğur Kumru 的回答,稍作修改:如果您不使用导航控制器,并且您正在针对 iOS 5.0+ 进行开发,您将需要使用:

    MenuScreenViewController* controller = (MenuScreenViewController*)[ourStoryBoard instantiateViewControllerWithIdentifier:@"<Controller ID>"];
    [self presentViewController:controller animated:YES completion:nil];
    

    如果你省略了 completion:nil 你会遇到错误

    【讨论】:

      猜你喜欢
      • 2018-05-16
      • 1970-01-01
      • 2022-08-23
      • 2018-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-06
      • 2010-11-25
      相关资源
      最近更新 更多