はい、AppDelegate application:didFinishLaunchingWithOptions:launchOptions メソッドで、plist からストーリーボード名を取得し、この設定に基づいてストーリーボードをロードできます。または、代わりにストーリーボード名を UserDefaults に保存し、ユーザーがプロ バージョンの料金を支払った後にその設定を更新することもできます。
または、UserDefaults を使用して、ユーザーがアップグレードしたかどうかだけを保存し、ストーリーボード名を appdelegate の定数として保持できます。
#define kStoryboardLite @"LiteStoryboard.storyboard"
#define kStoryboardPro @"ProStoryboard.storyboard"
...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSString *storyboardName;
NSString *userType = [[NSUserDefaults standardUserDefaults] objectForKey:@"userType"];
if ([userType isEqualToString:@"pro"]) {
storyboardName = kStoryboardPro;
} else {
storyboardName = kStoryboardLite;
}
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:storyboardName bundle:nil];
UIViewController *initialViewController = [storyboard instantiateInitialViewController];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = initialViewController;
[self.window makeKeyAndVisible];
}
このアプローチを使用する場合、他のストーリーボードを読み込むためにアプリを再起動するようにユーザーに依頼する必要があります。