1

我目前正在 viewDidLoad 方法中构建我的视图,它添加了链接到另一个视图的各种按钮。我遇到的问题是,当用户单击一个按钮并进入另一个视图时,他们可以购买 IAP,然后当用户单击后退按钮时,我希望视图“刷新”以显示此购买现在已经活跃起来了。

如何刷新视图?

提前致谢

4

3 回答 3

0

构建视图,viewDidLoad因此您只需添加一次控件,但在viewWillShow. 请记住,viewWillShow将在构建完成后立即刷新它viewDidLoad。因此,将定义控件外观的值保留viewController在委托可变数组中

NSMutableArray例如,在您的AppDelegate.h和 .m中创建并启动

在.h界面

NSMutableArray *yourArray;

添加属性

@property (retain, nonatomic) NSMutableArray *yourArray;

@synthesyze yourArray;

在 .m 中启动它

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

yourArray=[[NSMutableArray alloc]init];

//add initial objects to it as many as you have controls
}

在第一viewController

#import "AppDelegate.h"

-(void)viewWillShow:(BOOL)animated{

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

//pull objects from array and apply to your controls, say you have a string as a 1st obj

NSString *tmpStr=[appDelegate.yourArray objectAtIndex:0];//use it some where, say button's title

//etc
}

viewController您将根据用户的选择在第二次更改这些值

#import "AppDelegate.h"

viewController在 yourArray中的第二个代码更新值的某处说

-(void)viewWillDisappear:(BOOL)animated{

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

//run a loop and update all objects

[appDelegate.yourArray replaceObjectAtIndex:i withObject:newObj];
}

当您返回 1st 时viewControllerviewWillShow将从您的委托数组中刷新它们。

于 2014-03-19T19:32:27.613 回答
0

任何视图都可以通过调用setNeedsDisplay该视图来显式刷新。
此外,您不应将条款UIViewControllerUIView.
我假设你没有刷新问题,你只会在自编程的自定义视图中遇到。我预计相关视图的数据没有更新。

于 2012-12-12T11:36:08.433 回答
0

你有几个选择。存储是否进行了购买,然后在您希望更改的视图的 viewWillAppear 方法中运行检查是否进行了购买的方法

或者...设置一个委托回调,在购买页面上进行更改时更改按钮(http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-custom-delegates/)

或者... 通过从 navigationController 堆栈访问前一个视图直接操作它 ([[self.navigationController viewControllers]objectAtIndex:YOURVIEW])

于 2012-12-12T16:13:55.767 回答