我有两个问题,我想解决,一个是刷新选项卡控制器本身,另一个是刷新tabcontroller的内容。iPhone刷新tabcontroller和内容
我希望刷新标签控制器本身的原因是我的应用程序有一个Web调用,它返回一个JSON,它设置标签的顺序并设置每个标签的内容。我有它,这样你背出申请,并重新进入应用程序时,标签控制器是通过把
exit(0)
在AppDelegates ApplicationDidEnterBackground这样,当用户备份出来,重新进行控制器将被刷新刷新。在applicationDidFinishLaunchingWithOptions中,我设置了一个Web调用,它调用JSON,然后用它来设置Tab键顺序。我知道这不是一个很好的做法,但暂时来说,它是我能想到的唯一解决方案。我还可以刷新TabController吗?
对于选项卡的内容,它是刷新使用此代码
becomeActiveObserver = [[NSNotificationCenter defaultCenter]
addObserverForName:UIApplicationDidBecomeActiveNotification
object:nil
queue: nil
usingBlock:^(NSNotification *note){
[self refresh];
[self viewDidUnload];
}];
我已经设置这种类型的代码为每个所述5个标签的使用。这很有效,但问题是内容仅在应用程序退出并再次访问时刷新。网络电话将是周期性的,当网络电话发出时,我希望它的内容会刷新自己,而不必退出并重新进入应用程序。
为了测试的目的,我在我的设置屏幕中设置了一个按钮(设置屏幕只是我的一个选项卡中的另一个视图),当单击阅读JSON时,它将存储在与检索到的JSON不同的iPhone目录中从网络通话(节省我不得不去服务器,并不断改变JSON那里)。当点击这个按钮时,它应该读取这个新的JSON,更新内容然后刷新视图。我已经测试了这一点,JSON正在被读取并且数据正在被更新(我在每个屏幕上设置了一个按钮来读取它用于确认的JSON),但是在我退出并进入再次申请。
我在设置屏幕阅读JSON存储在设备上设置的临时代码
-(IBAction)RefreshApp:(id)sender{
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"widgjson" ofType:@"json"];
NSData *myData = [NSData dataWithContentsOfFile:filePath];
NSString *responseString = [[NSString alloc] initWithData:myData encoding:NSUTF8StringEncoding];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDir = [paths objectAtIndex: 0];
NSString *docFile = [docDir stringByAppendingPathComponent: @"json.txt"];
[fileManager removeItemAtPath:docFile error:NULL];
[responseString writeToFile:docFile atomically:NO encoding:NSUTF8StringEncoding
DashboardVC *db = [[DashboardVC alloc] init];
[db refresh];
[db viewDidUnload];
}
在底部,你可以看到我试图从一个选项卡打电话刷新刷新一个的意见确实看到,如果工作,但没有运气。刷新代码似乎只能从类内部调用它时才起作用,我无法在从另一个类访问它时刷新它。
当进行网络通话时,我希望每一个标签一次被刷新。任何想法,我会如何做到这一点?
如果有人能指出我正确的方向,我将非常感激。
请勿在代码中的任何位置放置“exit()'”call *“。以这种方式终止您的应用程序(用户不是手动终止/退出应用程序的用户)肯定是苹果拒绝您的应用程序从应用程序商店的理由。 –