2012-03-12 178 views
4
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" 
                bundle: nil]; 

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

我到底在哪裏寫這段代碼,如果我必須確保當前視圖是用標識符實例化的?這意味着如果我在這個類上編寫任何代碼,它必須在這個viewcontroller加載時出現?另外我將如何使用它?我不想創建menuscreenviewcontroller的一個實例。這意味着我必須說自己,但我用self.view,並沒有工作。如何以及在哪裏使用instantiateViewControllerWithIdentifier

回答

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

2

按照維吾爾族Kumru的答案,用小編輯:如果你不使用導航控制器,如果省略完成

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

::零,你將面對錯誤

相關問題