IAP需要刷新View Controller视图

时间:2014-08-16 18:41:07

标签: ios uiviewcontroller in-app-purchase

我有ViewController1ViewController2

如果您从ViewController1转到ViewController2ViewController2,您可以在ViewController1上购买一个会显示按钮的IAP。

VC1 - > VC2,买 - > VC1(应显示购买解锁按钮)

我遇到的问题是,一旦我从ViewController1返回,该按钮就不会立即显示在ViewController2上。

只有在我回到ViewController1然后再次前往ViewController2然后返回ViewController1时,它才有效。

VC1 - > VC2,买 - > VC1(按钮3仍然隐藏) - > VC2 - > VC1(显示按钮三)

我假设以某种方式刷新视图,所以当我回到ViewController1时,我正试图弄清楚什么可以立即刷新它,而不是必须来回刷新它。

if(![[NSUserDefaults standardUserDefaults] boolForKey:@"Purchased3"]) {
        buttonThree.hidden = TRUE;
        labelThree.hidden = TRUE;
        NSLog(@"Trying to talk to VC2, hides button/label 3 because there's not purchases");

    } else {
        //buttonThree.hidden = TRUE;
        buttonThree.hidden = FALSE;
        labelThree.hidden = FALSE;
        NSLog(@"Trying to talk to VC2, doesn't hide button/label 3 because there has been a purchase");
    }

感谢您的帮助,如果需要,会发布更多代码,或者在需要时澄清!

VC1 - > VC2,买 - > VC1(按钮3仍然隐藏) - > VC2 - > VC1(显示按钮三)

2 个答案:

答案 0 :(得分:1)

一种选择是NSNotificationCenter使用UIViewController作为观察者添加viewDidLoad中的<{1}}:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(updateView)
                                             name:@"IAPUpdate"
                                           object:nil];

并添加该方法以查看控制器

-(void)updateView{
    // add your updating view stuff here
}

然后在您购买的UIViewController中,购买后,使用以下通知告诉第一个视图控制器:

[[NSNotificationCenter defaultCenter] postNotificationName:@"IAPUpdate" object:self];

答案 1 :(得分:1)

问题可能是将值存储在NSUserDefaults中需要一些时间,并且在您返回ViewController1时可能无法设置。

您可以通过3种方式解决问题:

1)成功购买IAP产品后,使用[NSNotificationCenter defaultCenter] API通知ViewController1它应该自行更新。

2)您可以在AppDelegate.h中设置全局int属性,这样您就可以立即轻松查看最新值(即使它尚未在NSUserDefaults中设置)。

3)使用委托模式。