如何以及在哪里使用instantiateViewControllerWithIdentifier

问题描述:

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

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

我到底在哪里写这段代码,如果我必须确保当前视图是用标识符实例化的?这意味着如果我在这个类上编写任何代码,它必须在这个viewcontroller加载时出现?另外我将如何使用它?我不想创建menuscreenviewcontroller的一个实例。这意味着我必须说自己,但我用self.view,并没有工作。如何以及在哪里使用instantiateViewControllerWithIdentifier

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

例如,你需要使用这个代码来触发的过渡(也许一个按钮动作):

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]; 
+0

谢谢你,你正在开发针对iOS 5.0及您将需要使用。但是,如果我希望这个屏幕出现在启动画面之后,我该如何做,因此我不会有任何按钮或任何方式来触发转换?我只想让该屏幕与闪屏完成加载时出现的此屏幕的相应代码同步。我没有一个类的启动画面。它只是default.png – CodeGeek123 2012-03-12 11:48:34

+2

您可以使用 - (BOOL)应用程序:(UIApplication *)应用程序didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;或者,您可以直接将该viewController设置为故事板中的rootView控制器。只需拖动一个navigationController并将viewController设置为该navigationController的rootViewController。如果你想在代码中做到这一点,你可以将这个viewController设置为rootViewController,或者使用rootViewController构造函数创建一个UINavigationController,并将上面创建的控制器作为参数。 – 2012-03-12 13:14:27

按照*Kumru的答案,用小编辑:如果你不使用导航控制器,如果省略完成

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

::零,你将面对错误