您必須使用故事板中分配的標識符在代碼中執行此操作。你可以創建一個目標定義頭文件或在您AppDelegate.m的開始做#ifdef
S:
#ifdef TARGET_FOO
#define INITIAL_VC_ID @"FOO_ID"
[...]
,然後在您的應用程序委託的application:didFinishLaunchingWithOptions:
你可以這樣做:
UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window = window;
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];
[window setRootViewController:[mainStoryboard instantiateViewControllerWithIdentifier:INITIAL_VC_ID]];
[window makeKeyAndVisible];
return YES;
這需要你從項目的Info.plist中刪除任何「主要故事情節」參考,因此UIKit默認不會加載它。
謝謝馬丁,這個作品完美。唯一的區別是我使用了在目標設置中定義的預處理器(即INITIAL =「@ \」Initial_Target1 \「」),並將定義直接傳遞給'instantiateViewControllerWithIdentifier'。 – 2013-03-03 23:54:03
快速附錄......對於任何看到這個的人。我建議在'application:didFinishLaunchingWithOptions:'的** end **這樣做,如果你在那裏做任何初始化初始視圖的處理,否則'viewDidLoad'在'application:didFinishLaunchingWithOptions:'出口之前被調用。 – 2013-03-03 23:56:25
我通常會創建一個類似於'演示文稿管理器'的類,我設置並調用'setupWindow:'。這位經理知道一個保持對所有故事板(Main.storyboard,Login.storyboard,..)和所需標識符的引用(例如'presentLoginWithCompletionHandler:') – 2013-03-04 00:08:29