0

IAP( )を含むアプリを作成しましたIn App Purchase。アプリはUINavigationController. ユーザーがコンテンツの購入を決定すると、ロック解除機能によってコンテンツのロックが解除されます。ユーザーが [戻る] ボタンをタップすると、メイン メニューに戻り、アプリの残りの部分にアクセスできます。これはすべて正常に機能します。

私の問題は、ユーザーがのviewController一部であるロック解除UINavigationControllerされたページに移動してからメインメニューページに戻ると、ユーザーがロック解除されたコンテンツを購入したという事実のメモリをアプリがクリアし、(私は推測しています)メイン ページがリロードされたときにコンテンツを再度ロックするために、この初期メイン メニューproperty.enabled = no;のメソッドで設定される属性。viewDidLoadviewController

それで、私の質問は、ユーザーがアプリ内コンテンツを購入したことをアプリに知らせ、ユーザーがメインメニューページから離れた後もコンテンツのロックを解除したままにするにはどうすればよいですか?

で宣言できるのではないかと考えてBOOL appPurchased;mainMenuViewControllerます。次に、新しくロック解除された から、ステートメントで購入したコンテンツを有効にする を に設定するをviewControllers含めます。prepareForSegueMethodBOOLYESif

このようなもの:

  1. BOOL appPurchased;に宣言するmainMenuViewController.m@implementation

  2. に次のメソッドを実装しますmainMenuViewController.m

(void) viewWillAppear:(BOOL)animated {
    if (appPurchased) {
        [self enableLockedContent];
    } else if (!appPurchased){
        nil;
    }    
}
  1. で、UnlockedContentViewControllerに接続されている次のメソッドを実装します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値をmainViewControllerどこにでも送り返すというこの構成は機能していますか? より良い方法はありますか?

4

1 に答える 1

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 メソッドで) 取得するようにすることもできます。

于 2013-05-27T06:01:07.517 に答える