我希望能够刷新另一个类的视图,但我尝试过的任何方法都不起作用。我的应用程序是一个设置了多个选项卡的选项卡式应用程序。我的 ViewController1 类中有一个名为 refresh 的方法,如下所示
-(void)TestMe{
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"];
[responseString writeToFile:docFile atomically:NO encoding:NSUTF8StringEncoding error:Nil];
[self loadView];
[self viewDidLoad];
}
这工作正常。当应用程序第一次加载时,它会加载一个不同的 json,然后当我单击此按钮时,它会加载一个新的 JSON,然后更新视图。这只是暂时测试刷新。但是,如果我尝试从另一个类或 AppDelegates ApplicationDidEnterForeground 方法调用此方法,则不会发生任何事情。我试着这样称呼它
-(void)TestMe{
ViewController1 *vc = [[ViewController1 alloc] init];
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"];
[responseString writeToFile:docFile atomically:NO encoding:NSUTF8StringEncoding error:Nil];
[vc loadView];
[vc viewDidLoad];
}
那么为什么此方法不适用于任何其他类。我想要的只是能够从另一个类或应用程序加载时刷新视图,但似乎找不到任何有用的东西。
如果有人能指出我正确的方向,将不胜感激!
编辑:更新澄清
好吧,我暂时做的不喜欢的就是放这个
exit(0);
在 AppDelegates ApplicationDidEnterBackground 内部。这在一定程度上可行,但不是理想的解决方案。
我希望发生的是,当再次打开应用程序时,AppDelegate 会再次运行,从而设置选项卡。从服务器提取的 JSON 会影响选项卡的顺序,这就是为什么我需要 AppDelegates ApplicationDidFinishLaunching 方法重新加载自身的原因。
另外我想知道我可以从应用程序的另一个类中做到这一点。第一次加载我的应用程序时,它会询问用户的电话号码,该号码会发送到服务器,然后服务器会生成一个 PIN。完成后,我希望 AppDelegate 方法加载并开始设置选项卡和顺序等。