В моем делегате приложения я создаю контроллер вкладок с кучей контроллеров представления для него и затем отдельный UIViewController, который я показываю как самый верхний вид, пока пользователь не выполнит определенное действие.
Сначала я закрываю свой контроллер вкладок вторым контроллером, но в конце концов второй контроллер удаляется с помощью команды «removeFromSuperview». Однако после того, как это произойдет, представление контроллера вкладок не будет реагировать на любые нажатия или любое взаимодействие с пользовательским интерфейсом. Мое приложение не зависло, так как я вижу, как происходит обработка.
Есть ли способ сделать контроллер вкладок де-факто ответчиком после отклонения самого верхнего вида?
Вот как я изначально создаю оба контроллера представления:
{
// main navigation controller is a tab bar
UITabBarController *tabBarController = [[UITabBarController alloc] init];
tabBarController.viewControllers = [NSArray arrayWithObjects: controller1,
controller2,
controller3, nil];
// Add the tab bar to the view
[window addSubview:tabBarController.view];
// Creating the 2nd navigation controller - covering up the tab bar
// temporarily
UIViewController *viewController = [[MySecondViewController alloc]
initWithNibName:@"SomeView"
bundle:nil];
UINavigationController *navController = [[UINavigationController alloc]
initWithRootViewController:viewController];
[viewController release];
// Configure and show the second navigation controller
[window addSubview:[navController view]];
// Make everything visible
[window makeKeyAndVisible];
}
Как отклоняется самый верхний вид:
@interface MySecondViewController : UIViewController
{
}
-(void)dismissMe;
@end
@implementation MySecondViewController
-(void)dismissMe
{
// Here, the this view is getting removed
[self.view removeFromSuperview];
}
@end
Я не хочу, чтобы самый верхний вид выглядел так, как будто я добавлял модальное диалоговое окно, и хотел бы, чтобы экран появлялся сразу после запуска приложения.