是否可以根据Target更改'是初始视图控制器'?

时间:2013-03-03 21:32:57

标签: ios xcode storyboard

我的iOS产品有几个不同的SKU,每个SKU都应该以不同的视图控制器开头。我有不同的SKU按目标分隔,这允许我指定该版本产品所需的预处理器。

然而,我希望能够做的一件事是改变故事板中的'是初始视图控制器'值,以便构建不同的SKU,而无需根据打开或关闭手动选中该框。我正在建设什么。

所以我的问题是,这可以通过目标还是以编程方式完成(因此我可以使用带有特定SKU预处理器的#ifdef来完成此操作)?

提前致谢!

1 个答案:

答案 0 :(得分:3)

您必须使用故事板中指定的标识符在代码中执行此操作。您可以创建目标定义头文件或在AppDelegate.m的开头执行#ifdef

#ifdef TARGET_FOO
#define INITIAL_VC_ID @"FOO_ID"
[...]

然后在你的app委托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中删除任何“Main storybaord”引用,以便UIKit默认不加载它。