我目前正在 viewDidLoad 方法中构建我的视图,它添加了链接到另一个视图的各种按钮。我遇到的问题是,当用户单击一个按钮并进入另一个视图时,他们可以购买 IAP,然后当用户单击后退按钮时,我希望视图“刷新”以显示此购买现在已经活跃起来了。
如何刷新视图?
提前致谢
我目前正在 viewDidLoad 方法中构建我的视图,它添加了链接到另一个视图的各种按钮。我遇到的问题是,当用户单击一个按钮并进入另一个视图时,他们可以购买 IAP,然后当用户单击后退按钮时,我希望视图“刷新”以显示此购买现在已经活跃起来了。
如何刷新视图?
提前致谢
构建视图,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 时viewController
,viewWillShow
将从您的委托数组中刷新它们。
任何视图都可以通过调用setNeedsDisplay
该视图来显式刷新。
此外,您不应将条款UIViewController
与UIView
.
我假设你没有刷新问题,你只会在自编程的自定义视图中遇到。我预计相关视图的数据没有更新。
你有几个选择。存储是否进行了购买,然后在您希望更改的视图的 viewWillAppear 方法中运行检查是否进行了购买的方法
或者...设置一个委托回调,在购买页面上进行更改时更改按钮(http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-custom-delegates/)
或者... 通过从 navigationController 堆栈访问前一个视图直接操作它 ([[self.navigationController viewControllers]objectAtIndex:YOURVIEW])