解锁UINavigationController中的内容

时间:2013-05-27 02:57:50

标签: ios uinavigationcontroller in-app-purchase

我构建了一个包含IAPIn App Purchase)的应用。该应用使用UINavigationController构建。当用户决定购买内容时,解锁功能解锁内容。然后用户点击后退按钮,然后将它们带回主菜单,然后他们可以访问应用程序的其余部分。所有这一切都很好。

我的问题是,当用户转到viewController的解锁UINavigationController时,然后返回主菜单页面,该应用已清除其内存用户的事实已购买解锁内容并且(我假设)使用此初始主菜单property.enabled = no;的{​​{1}}方法中设置的viewDidLoad属性在主页面重新锁定内容时重新加载。

所以,我的问题是如何让应用知道用户购买了应用内内容,并在用户偏离主菜单页面后保持内容解锁?

我想也许我可以在viewController中声明BOOL appPurchased;。然后,从新解锁的mainMenuViewController中添加一个viewControllers,将prepareForSegueMethod设置为BOOL,然后在YES语句中启用所购买的内容。< / p>

这样的事情:

  1. if

  2. 之后在BOOL appPurchased;中声明mainMenuViewController.m
  3. @implementation中实施以下方法:

  4. mainMenuViewController.m
    1. (void) viewWillAppear:(BOOL)animated { if (appPurchased) { [self enableLockedContent]; } else if (!appPurchased){ nil; } } 中,实施以下与UnlockedContentViewController
    2. 相关联的方法
      UIButton

      我无法弄清楚如何在上述(IBAction)toMainMenu:(id)sender { UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; UIViewController *mainMenu = [mainStoryboard instantiateViewControllerWithIdentifier:@"cover"]; [self.navigationController pushViewController:mainMenu animated:YES]; } 方法中编写MainMenuViewController.appPurchase =YES;

      这种配置是将(IBAction)toMainMenu:(id)sender值发送回BOOL任何接近工作的地方吗?还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以将UIViewController转换为MainMenuViewController(然后您将能够设置appPurchase属性):

- (IBAction)toMainMenu:(id)sender {
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
                                                             bundle:nil];
    MainMenuViewController *mainMenu = (MainMenuViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"cover"];
    mainMenu.appPurchase = YES;
    [self.navigationController pushViewController:mainMenu animated:YES];
}

您还可以在某处保留购买信息(可能是NSUserDefaults?)并使MainMenuViewController自行检索此信息(在init或甚至viewDidLoad方法上)。