Привет, ребята,
У меня общая проблема с дизайном приложения для iPhone.Я хочу знать основной принцип, как перейти от обычного представления с navigationController к tabBarController с вкладками, где каждая вкладка имеет свой собственный navigationController (больше не нужен первый navigationController).
Позвольте мне показать вам, как я сделал это:
Сначала я добавил некоторое представление с помощью кнопки в навигационный контроллер.AppDelegate добавляет этот navigationController (с контроллером представления, конечно) в качестве subView к окну:
[window addSubview:navigationController.view];
Когда я добираюсь до этого нового представления (с навигационным контроллером сверху), я нажимаю кнопку, которая переводит меня в новое представление, которое имеет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 с навигацией.Поэтому я сделал это, чтобы скрыть это:
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?
Все, что я хочу, это когда кнопка на firstView - это щелчок, и приложение выводит меня на tabBarController и вообще забывает о firstView (и first navigationController) - они мне больше не нужны.
Надеюсь, ядал понять.
Спасибо за вашу помощь.Я действительно ценю это.