0

我有一个 iOS 产品,它有几个不同的 SKU,每个 SKU 都应该从不同的视图控制器开始。我有由 Targets 分隔的不同 SKU,这允许我指定该产品版本所需的预处理器。

但是,我希望能够做的一件事是更改情节提要中的“初始视图控制器”值,以便构建不同的 SKU,而无需根据我的身份手动打开或关闭该框建造。

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

提前致谢!

4

1 回答 1

3

您必须使用情节提要中分配的标识符在代码中执行此操作。您可以创建一个目标定义头文件或#ifdef在 AppDelegate.m 的开头执行 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 默认不会加载它。

于 2013-03-03T22:39:48.780 回答