Как управлять TabBarController в новом представлении после push-действия viewController - PullRequest
1 голос
/ 06 июля 2010

У меня проблема со сборкой приложения при помощи tabBarController.Нет проблем с выполнением tabBarController с navigationController, если я создаю его из AppDelegate.

Но теперь у меня возникла проблема, когда я хочу создать новое представление с tabBarController (3 вкладки, и у каждого есть контроллеры навигации) после нажатия предыдущейнавигационный контроллер.Это просто не работает.

Вот код:

MainViewController *mainViewController = [[MainViewController alloc] initWithNibName:@"MainView_iPhone" bundle:nil];
mainViewController.tabBarItem.title = @"First";
UINavigationController *mainNavigationController = [[UINavigationController alloc] initWithRootViewController:mainViewController];

DictionariesViewController *dictionariesViewController = [[DictionariesViewController alloc] initWithNibName:@"DictionariesView_iPhone" bundle:nil];
dictionariesViewController.tabBarItem.title = @"Second";
UINavigationController *dictionariesNavigationController = [[UINavigationController alloc] initWithRootViewController:dictionariesViewController];

tabBarController = [[UITabBarController alloc] init];
tabBarController.viewControllers = [NSArray arrayWithObjects:mainNavigationController, dictionariesNavigationController, nil];

[self.navigationController pushViewController:tabBarController animated:YES];

Возникла проблема после того, как представление передается на «Первый» контроллер.Приложение вылетает ...

Пожалуйста, за помощь.

С уважением Борут

Ответы [ 2 ]

1 голос
/ 08 июля 2010

Я сделал это таким образом, и это работает:

registerViewController = [[RegisterViewController alloc] initWithNibName:@"RegisterView_iPhone" bundle:nil];
AppDelegate_Phone *delegatePhone = [[UIApplication sharedApplication] delegate];
[delegatePhone.firstViewController.navigationController pushViewController:registerViewController animated:YES];

Спасибо за вашу помощь, ребята.

1 голос
/ 06 июля 2010

Что вы пытаетесь сделать с помощью следующего кода?

[self.navigationController pushViewController:tabBarController animated:YES];

Вы сказали, что в вашем приложении есть 3 вкладки, и на каждой из них есть контроллер навигации. Поэтому вам нужно добавить контроллеры навигации в tabBarController.viewControllers (что вы и сделали), но затем вам нужно установить tabBarController в качестве корневого контроллера представления.

...