我有一个 iOS 产品,它有几个不同的 SKU,每个 SKU 都应该从不同的视图控制器开始。我有由 Targets 分隔的不同 SKU,这允许我指定该产品版本所需的预处理器。
但是,我希望能够做的一件事是更改情节提要中的“初始视图控制器”值,以便构建不同的 SKU,而无需根据我的身份手动打开或关闭该框建造。
所以我的问题是,这可以通过目标还是以编程方式完成(所以我可以使用带有特定 SKU 预处理器的#ifdef 来做到这一点)?
提前致谢!
我有一个 iOS 产品,它有几个不同的 SKU,每个 SKU 都应该从不同的视图控制器开始。我有由 Targets 分隔的不同 SKU,这允许我指定该产品版本所需的预处理器。
但是,我希望能够做的一件事是更改情节提要中的“初始视图控制器”值,以便构建不同的 SKU,而无需根据我的身份手动打开或关闭该框建造。
所以我的问题是,这可以通过目标还是以编程方式完成(所以我可以使用带有特定 SKU 预处理器的#ifdef 来做到这一点)?
提前致谢!
您必须使用情节提要中分配的标识符在代码中执行此操作。您可以创建一个目标定义头文件或#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 默认不会加载它。