您必须使用故事板中分配的标识符在代码中执行此操作。你可以创建一个目标定义头文件或在您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