你如何以及在哪里使用instantiateViewControllerWithIdentifier

Cod*_*123 4 iphone ios4 ios ios5 uistoryboard

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
                                                     bundle: nil];

MenuScreenViewController *controller = (MenuScreenViewController*)[mainStoryboard 
                                               instantiateViewControllerWithIdentifier: @"<Controller ID>"];
Run Code Online (Sandbox Code Playgroud)

如果我必须确保使用标识符实例化当前视图,我究竟在哪里编写此代码?这意味着如果我在这个类上编写任何代码,它必须在这个viewcontroller加载时出现?我也将如何使用它?我不想创建menuscreenviewcontroller的实例.这意味着我必须说自己,但我使用self.view,但这不起作用.

Ugu*_*mru 7

您需要推送或显示已创建的视图控制器.您无法通过实例化直接更改控制器的视图.

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

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];
Run Code Online (Sandbox Code Playgroud)

  • 你可以使用 - (BOOL)应用程序:(UIApplication*)应用程序didFinishLaunchingWithOptions:(NSDictionary*)launchOptions; 或者,您可以直接将viewController设置为storyboard中的rootView控制器.只需拖动navigationController并将viewController设置为该navigationController的rootViewController即可.如果你想这样做的代码,你可以只设置此的viewController作为RootViewController的或创造与RootViewController的构造一个UINavigationController,把你上面创建作为参数的控制器. (2认同)