2010-07-06 7 views
1

У меня проблема с применением приложения tabBarController. Нет проблем с выполнением tabBarController с navigationController, если я создам его из AppDelegate.Как управлять TabBarController на новом представлении после viewController push action

Но теперь у меня возникла проблема, когда я хочу создать новый вид с помощью 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]; 

Существует проблема после того, как точка зрения Pushe на «Первом» контроллера. Сбой приложений ...

Прошу помощи.

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

+0

Пожалуйста, переформатируйте свой код. Трудно читать код, как есть :) – ryanprayogo

ответ

1

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

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

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

+0

Да, у моего приложения есть 3 вкладки, и каждый из них имеет свой собственный навигационный контроллер. Я добавляю один контроллер navigationController и view для каждого tabBarController. В конце я толкнул все на новый взгляд: [self.navigationController pushViewController: tabBarController animated: YES]; Что вы хотите сказать, что мне нужно установить tabBarController в качестве корневого контроллера? Можете ли вы дать мне часть кода, показывающую, как это сделать? Спасибо –

+0

В своем делетете приложения, сделайте следующее после добавления всех навигационных контроллеров в tabBarController. '[window setRootViewController: tabBarController];' – ryanprayogo

+0

Проблема в том, что я не создаю tabBarController в AppDelete, а в первом подвидном. Поэтому я не могу получить доступ к свойству окна. Если кратко подвести итог. В AppDelegate я сначала нажимаю navigationController и некоторое представление внутри. После нажатия кнопки в представлении я создаю tabBarController, и я нажимаю его здесь, и я больше не в AppDelegate. Спасибо –

1

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

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

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

Смежные вопросы