해결하려고하는 두 가지 문제가 있습니다. 하나는 탭 컨트롤러 자체를 새로 고치고 다른 하나는 tabcontroller의 콘텐츠를 새로 고치는 것입니다.iPhone이 탭 컨트롤러와 콘텐츠를 새로 고침
내가 탭 컨트롤러 자체를 새로 고침하려는 이유는 내 응용 프로그램이 탭 순서를 설정하고 각 탭의 내용을 설정하는 JSON을 반환하는 웹 호출을 가지고 있기 때문입니다. 탭 컨트롤러는 컨트롤러가 새로 고쳐집니다 사용자가 밖으로 백업 할 때 그와 다시 있도록 AppDelegates applicationDidEnterBackground :와에
exit(0)
을 넣어 새로 고칠 때 다시 응용 프로그램 중 사용자와 응용 프로그램을 다시 입력하도록 나는 그것을 가지고 . applicationDidFinishLaunchingWithOptions에서 JSON을 호출하는 웹 호출을 설정 한 다음 JSON을 호출하여 탭 순서를 설정합니다. 나는 이것이 이것을하는 좋은 방법이 아니라는 것을 알고 있지만 당분간은 내가 생각할 수있는 유일한 해결책이다. 어떻게하면 TabController를 새로 고칠 수 있습니까?
는 탭의 내용에 관해서는,이 코드 나는 5 개 각 탭에 대한 코드까지의이 유형을 설정 한
becomeActiveObserver = [[NSNotificationCenter defaultCenter]
addObserverForName:UIApplicationDidBecomeActiveNotification
object:nil
queue: nil
usingBlock:^(NSNotification *note){
[self refresh];
[self viewDidUnload];
}];
를 사용하여 새로 고쳐집니다. 이것은 잘 작동하지만 응용 프로그램이 종료되고 다시 액세스 될 때만 내용이 새로 고쳐집니다. 웹 전화는 주기적으로 진행되며 웹 통화가 이루어지면 콘텐츠를 다시 가져 오지 않고 응용 프로그램으로 다시 보내지 않아도됩니다.
테스트 목적으로 설정 화면 (설정 화면은 내 탭 중 하나의 다른보기 임)에서 읽기 JSON을 클릭하면 가져온 JSON과 다른 iPhone 디렉토리에 저장되는 버튼을 설정했습니다 웹 호출에서 (서버에 가서 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 * anywhere *를 넣지 마십시오. 이 방법으로 앱을 종료하면 (사용자가 앱을 수동으로 종료/종료하지 않는 경우) 앱 스토어에서 앱을 거부해야합니다. –