używam następujący kod, aby wyświetlić poprzedni widok, gdy użytkownik jest na przyciskupopviewcontroller nie dzwoni viewWillappear
[self.navigationController popViewControllerAnimated:YES];
W poprzednim widzenia kliknięcie, mam nadpisać viewWillAppear do zainicjowanych kilka rzeczy. Wygląda jednak na to, że viewWillAppear nie jest wywoływany. Wstawiłem NSLog w viewDidload, viewWillAppear, viewDidAppear i tylko viewDidAppear jest wywoływany. Czy to normalne zachowanie? Jeśli tak, jakie zdarzenie należy przesłonić, aby móc przeprowadzić inicjalizację? Dziękuję Ci.
Zgodnie z wnioskiem -viewWillAppear do poprzedniego widoku
- (void)viewWillAppear:(BOOL)animated{
NSLog(@"ViewWillAppear");
//[[GameStore defaultStore] resetGame];
[self setHangmanImage];
NSLog([[[GameStore defaultStore] selectedList] label]);
[labelListName setText:[NSString stringWithFormat:@"List Name: %@", [[[GameStore defaultStore] selectedList] label]]];
[labelCurrentIndex setHidden:YES];
[labelCurrentWord setHidden:YES];
[[self navigationController] setNavigationBarHidden:NO];
[FlurryAnalytics logEvent:@"GameViewController - viewWillAppear"];
[self getNewQuestion];
NSLog(@"ViewWillAppear finish");
[super viewWillAppear:YES];
}
I skonfigurowaliśmy UINavigationalController w app delegata za pomocą następującego kodu
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
HomeViewController *hv = [[HomeViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc]
initWithRootViewController:hv];
// You can now release the itemsViewController here,
// UINavigationController will retain it
[hv release];
// Place navigation controller's view in the window hierarchy
[[self window] setRootViewController:navController];
[navController release];
// Override point for customization after application launch.
[self.window makeKeyAndVisible];
return YES;
}
UPDATE
nie wiem co się stało, ale ostatniej nocy po próbie uruchomienia aplikacji jeszcze raz w symulatorze i nadal ma thi Problem, postanowiłem wszystko zapisać i wyłączyć komputer, ponieważ robi się późno.
Dziś rano odłożyłem komputer z powrotem na otwarty kod xcode, wyczyściłem projekt, skompilowałem go i uruchomiłem, a problem został rozwiązany i wywoływana jest funkcja -viewWillAppear. Nic nie zmieniłem i nie działałem. Dodałem NSLog w -ShowView i nie zostanie wywołany. Nie wiem, dlaczego wywoływany jest nagle viewWillAppear.
Po prostu z ciekawości, czy próbowałeś ręcznie wywoływać -viewWillAppear? – Ricky
Jak ręcznie wywołać viewWillAppear? czy mogę to nazwać z widoku, w którym nazywam [self.navigationController popViewControllerAnimated: YES]; od? – atbebtg
Tak - najlepiej byłoby umieścić '[previousView viewWillAppear: YES]' powyżej '-popViewControllerAnimated:' – Ricky