我正在更改我的应用以添加应用内购买。当我最初设置应用程序时,我使用了界面构建器,但现在我需要确定哪个类和&根据用户是否购买了某项功能,在应用启动时加载的xib文件。
我的应用程序设置了一个标签栏控制器,每个标签都有一个naviagion控制器。在MainWindow.xib文件中,我告诉IB使用HomeView.xib和HomeView类。现在我需要检查是否已购买功能并加载HomeView或HomeView2。我不知道应用程序在哪里告诉naviagionController要加载哪个类和视图,因为我之前在界面生成器中设置了所有这些。
我可以在HomeViewNavigationController中做出这个决定而不是IB自动为我做出这个决定吗?
提前感谢您的帮助!
答案 0 :(得分:1)
您可以在Info.plist中设置要加载的xib。在启动时,系统将自动加载此xib。虽然很容易更改Info.plist文件中的xib名称,但它会被Apple拒绝。
这就是我要做的事情:不要使用xib,至少对于你提到的两个。而是在applicationDidFinishLaunching:(NSNotification *)通知
中创建所有内容- (void)applicationDidFinishLaunching:(NSNotification *)notification
{
UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UITabBarController *t = [[UITabBarController alloc] initWithFrame:NSMakeRect(0, 0, 0, 0)];
// add the other view controllers
if(/* check for which xib to load */)
{
// change whatever you need to change
}
else
{
// ...
}
[window addSubview:[t view]];
[window makeKeyAndVisible];
}
答案 1 :(得分:1)
保持简单。
在HomeView.xib中,您可以加载两个不同的视图。让xib中的UIViewController视图为“容器视图”。在HomeView控制器的viewDidLoad中执行检测代码,然后将正确的视图添加为子视图。
- (void)viewDidLoad
{
[super viewDidLoad];
if (featureWasPaidFor)
{
[self.view addSubview:self.homePurchaseView];
} else {
[self.view addSubview:self.homeNonPurchaseView];
}
}