В моем приложении я программно меняю контроллеры корневого представления на основе действий пользователя, например. функция входа / выхода.
В iOS 8 - замечаю странную проблему. Даже после установки rootViewController в окне старая иерархия все еще сохраняется. Я только что проверил это, зафиксировав иерархию представлений.
- (void) logout{
[self.window setRootViewController:[self loadLoginView]];
}
-(UIViewController *) loadLoginView{
WelcomeScreenVC *wsVC;
wsVC = [[WelcomeScreenVC alloc] initWithNibName:@"WelcomeScreenVC" bundle:nil];
UINavigationController *onboardingVC = [[UINavigationController alloc]initWithRootViewController:wsVC];
return onboardingVC;
}
Даже после выполнения этой строки кода старая иерархия представлений, вошедших в систему, все еще сохраняется. Был бы признателен, если бы кто-нибудь мог предположить, что происходит за кулисами.
Изменить: я только что посмотрел документацию UIWindow setRootViewController, и вот что Apple должна сказать об этом:
Контроллер корневого представления обеспечивает представление содержимого окна. Назначение контроллера представления этому свойству (программно или с помощью Interface Builder) устанавливает представление контроллера представления как представление содержимого окна. Если окно имеет существующую иерархию представлений, старые представления удаляются перед установкой новых.