我有ViewController1
和ViewController2
。
如果您从ViewController1
转到ViewController2
,ViewController2
,您可以在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(显示按钮三)
答案 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)使用委托模式。