Я использую следующий код для отображения предыдущего представления, когда пользователь нажимает кнопку
[self.navigationController popViewControllerAnimated:YES];
В предыдущем представлении я перезаписываю viewWillAppear для нескольких инициализированных вещей. Тем не менее, похоже, что viewWillAppear не вызывается. Я поместил NSLog в viewDidload, viewWillAppear, viewDidAppear и вызывается только viewDidAppear. Это нормальное поведение? Если да, какое событие мне следует переопределить, чтобы я мог выполнить свою инициализацию? Спасибо.
По запросу -viewWillAppear для предыдущего просмотра
- (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];
}
Я установил UINavigationalController в делегате приложения, используя следующий код
- (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
Я не знаю, что случилось, но прошлой ночью, после попытки запустить приложение еще раз в симуляторе, и у него все еще есть эта проблема, я решил сохранить все и выключил свой компьютер, так как стало поздно.
Этим утром я снова включил мой компьютер, открыл xcode, очистил проект, собрал и запустил его, и я исправил проблему и вызвал -viewWillAppear. Я ничего не изменил, и это работает. Я добавил NSLog в -willShowView, и он не вызывается. Я не знаю, почему внезапно вызывается viewWillAppear.