1

Привет, ребята,Как правильно перемещаться от navigationController к tabBarController с собственным navigationControllers

У меня есть общая проблема проектирования с применением iPhone. Я хочу знать основной принцип, как перейти от обычного вида с помощью navigationController к tabBarController с вкладками, где каждая вкладка имеет свой собственный навигационный контроллер (больше не нужен первый навигационный контроллер).

Позвольте мне показать вам, как я сделал это:

Сначала я добавил представление с кнопкой navigationController. AppDelegate добавляет эту navigationController (с точки зрения контроллера конечно) как подвид в окно:

[window addSubview:navigationController.view]; 

Когда я на этот новый взгляд (с navigationController сверху) я нажимаю на кнопку, которая принимает меня новый взгляд, который имеет tabBarController (со своим navControllers):

SearchViewController *searchViewController = [[SearchViewController alloc] initWithNibName:@"SearchView_iPhone" bundle:nil]; 
searchViewController.tabBarItem.title = @"FirstTab"; 
UINavigationController *searchNavigationController = [[UINavigationController alloc] initWithRootViewController:searchViewController]; 

SettingsViewController *settingsViewController = [[SettingsViewController alloc] initWithNibName:@"SettingsView_iPhone" bundle:nil]; 
settingsViewController.tabBarItem.title = @"SecondTab"; 
UINavigationController *settingsNavigationController = [[UINavigationController alloc] initWithRootViewController:settingsViewController]; 

//Add navigation controllers to tabBar controller 
tabBarController = [[UITabBarController alloc] init]; 
tabBarController.viewControllers = [NSArray arrayWithObjects:searchNavigationController, dictionariesNavigationController, settingsNavigationController, nil]; 

Хорошо, я добавил все мнения (с navControllers) до tabBarController. Все, что мне нужно сделать, это нажать tabBarController, чтобы увидеть:

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

Но после того, что я вижу, что navigationController с первого взгляда по-прежнему присутствует на представлениях с tabBars. Это логично, потому что я нажал tabBarController с navigationController. Поэтому я сделал это, чтобы скрыть это:

self.navigationController.navigationBarHidden = YES; 

Теперь это выглядит нормально. Все виды tabBar имеют собственный navController.

ОСНОВНАЯ ПРОБЛЕМА: Когда я хочу нажать другой вид (settingsResultsViewController) из скрытой таблицы (settingsTableViewCell), которая находится в settingsViewController, ничего не происходит. Вот код:

SettingsResultsViewController *settingsResultsViewController = [[SettingsResultsViewController alloc] initWithNibName:@"SettingsResultsView_iPhone" bundle:nil]; 
[self.navigationController pushViewController:settingsResultsViewController animated:YES]; 

Я также попытался выдвинуть эту точку зрения с AppDelegate так:

[delegatePhone.settingsViewController.navigationController pushViewController:settingsResultsViewController animated:YES]; 
[delegatePhone.firstViewController.navigationController pushViewController:settingsResultsViewController animated:YES]; 

Но опять ничего не происходит.

Я предполагаю, что основная проблема заключается в навигацииКонтроллеры. Первый navigationController все еще находится где-то сзади, а я хочу нажать с текущего navController на этом конкретном tabBar.

Есть ли способ нажать новый вид (tabBarController в моем случае) с первого взгляда, кроме как с navigationController?

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

Надеюсь, я дал понять.

Благодарим за помощь. Я действительно предлагаю это.

+0

Я гугл для решения и некоторые один сказал, что мне нужно установить tabBarController в качестве контроллера зрения корня. Это правильно? Как я могу это сделать ? –

ответ

0

Вы можете отобразить контроллер панели вкладок, вызвав presentModalViewController:animated: вместо того, чтобы нажимать его на стек навигации. И если вам не нужен первый контроллер навигации вообще, вы, вероятно, должны заменить его стандартным контроллером.

+0

Спасибо за совет, но я все еще не могу нажать другое представление в tableViewCell в виде tabBar. Когда я тестирую этот код, я получаю nil: if (self.navigationController == nil) \t NSLog (@ "Навигация нуль"); if (self.parentViewController.navigationController == nil) \t NSLog (@ "родительская навигация - ноль"); Как может быть, что self и parent navigationControllers ноль? –

0

Tweetie автор прокомментировал поток, касающийся полос табуляции и контроллеров nave некоторое время назад. Помогает ли эта нить?

Tab bar controller inside a navigation controller, or sharing a navigation root view

+0

Это не помогает мне. Я попытался нажать tabBarController как modalView (presentModalViewController). Но до сих пор не повезло. Я все еще не могу выдвинуть новый вид из tableView, который является подчиненным firstTabBar. Может ли кто-нибудь помочь мне решить эту проблему? –

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