我的iOS产品有几个不同的SKU,每个SKU都应该以不同的视图控制器开头。我有不同的SKU按目标分隔,这允许我指定该版本产品所需的预处理器。
然而,我希望能够做的一件事是改变故事板中的'是初始视图控制器'值,以便构建不同的SKU,而无需根据打开或关闭手动选中该框。我正在建设什么。
所以我的问题是,这可以通过目标还是以编程方式完成(因此我可以使用带有特定SKU预处理器的#ifdef来完成此操作)?
提前致谢!
答案 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默认不加载它。