Приложение панели вкладок с контроллером навигации - программирование
Подтвердить что ты не робот

Приложение панели вкладок с контроллером навигации

У меня есть простое приложение для iPhone, которое имеет панель вкладок и 3 вкладки. Каждая вкладка загружается как отдельный наконечник с соответствующим контроллером. Каждый nib содержит табличное представление с некоторыми другими элементами управления для поиска/фильтрации и т.д.

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

Должен ли я добавить контроллер навигации в главное окно и создать для него IBOutlet или добавить NC в наконечники.

4b9b3361

Ответ 1

Как только у вас есть панель вкладок в XIB, самый простой способ приблизиться к этому - перетащить объект UINavigationController из окна библиотеки (выглядит как левая кнопка навигации на золотом фоне) в Tree View для вашей вкладки bar (только просмотр текста, а не GUI). Поместите контроллер навигации внутри контроллера панели вкладок, затем перетащите существующий контроллер просмотра внутри навигационного контроллера.

Когда вы переходите на эту вкладку, вы должны увидеть панель навигации наверху... если вы загружаете контроллер навигации из другого xib, вы измените навигационную панель на панели вкладок xib.

Ответ 2

Это то, как программным образом добавить NavigationController (например, в AppDelegate)

  UIViewController  *viewController1, *viewController2;

    viewController1 = [[[UIViewController alloc] initWithNibName:@"FirstViewController_iPhone" bundle:nil] autorelease];
    UINavigationController *navigationcontroller = [[[UINavigationController alloc] initWithRootViewController:viewController1] autorelease];

    viewController2 = [[[UIViewController alloc] initWithNibName:@"SecondViewController_iPhone" bundle:nil] autorelease];

    self.tabBarController = [[[UITabBarController alloc] init] autorelease];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:navigationcontroller, viewController2, nil];

Если у вас есть представление таблицы в Viewcontroller1, вы можете получить доступ к навигационному контроллеру с помощью self.navigationController, например. в didSelectRowAtIndexPath, чтобы открыть DetailView

например.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil];
    [self.navigationController pushViewController:detailViewController animated:YES];
    [detailViewController release];
}

В этом примере элемент detailViewController с файлом NIB, который добавляет панель навигации с помощью кнопки "Назад". Но если вы также инициализируете программный код detailViewController, вы можете добавить действие (GoBack) в UIBarButtonItem, чтобы удалить detailViewController из своего навигационного контроллера.

-(void) GoBack
{    
    [self.navigationController popViewControllerAnimated:YES];
}

Ответ 3

Я понял, что это поздно, но сегодня этот вопрос №1 в результатах Google, поэтому я решил добавить ответ. В O'Reilly есть большой учебник по видеоуправлению YouTube, в котором вы просматриваете приложение на панели навигации + навигационное устройство. Посмотрите здесь: http://www.youtube.com/watch?v=LBnPfAtswgw

Ответ 4

Способ думать об этом:

Вы хотите, чтобы на каждой вкладке был навигационный контроллер. Затем каждый контроллер должен иметь контроллер корневого представления и загруженный Nib.

Итак, в IB добавьте навигационные контроллеры для каждой из ваших вкладок. Затем настройте каждый контроллер nav на соответствующий контроллер корневого представления и Nib.

Ответ 5

много ответов, но никто не проверял...

конечно, все это теперь очень просто с раскадройками в построителе интерфейса Xcode:

создайте интересующий навигационный контроллер, затем выберите меню Editor и элемент Embed In >, а затем Tab Bar Controller.

это даже работало с навигационными контроллерами, которые Xcode представляет вам, когда вы начинаете с шаблона контроллера/шаблона split-view-controller для нового проекта. в обоих случаях у меня теперь есть контроллер панели вкладок в качестве моего мастера; для iPhone он пульсирует полностью через конечные контроллеры, а на iPad он удерживает вкладки только в главном (т.е. разделение справа в ландшафте и поппорт в портрете).

Ответ 7

Откройте файл XIB вашего UITabBarController (из MainWindow.xib)

Перейдите в раздел "Атрибуты контроллера панели вкладок". Вы увидите раздел "Контроллеры просмотра" там, где будут упомянуты контроллеры представлений каждой вкладки. Просто измените тип контроллера на NavigationController на любую желаемую вкладку.

Выберите вид контроллера, который вы изменили, и проверьте параметр loadFromNib в его атрибутах и ​​выберите правильный нить. (как после смены контроллера, это соединение было бы потеряно)

Ответ 8

Вопрос слишком стар, но SDK обновлены, и некоторым читателям может понадобиться новый ответ. Итак, теперь для пользователей раскадровки ответ на использование как Tabbar, так и контроллера навигации довольно прост.

  • Перетащите навигационный контроллер внутри раскадровки.
  • Назначьте стрелку запуска новому контроллеру навигации, в результате чего контроллер станет отправной точкой.
  • Перетащите контроллер таблеток и настройте его с помощью вкладок и требуемого контроллера. Вы также можете настроить контроллер табуляции с вкладками позже, если хотите.
  • Выберите контроллер навигации и привяжите его "корневой контроллер" с помощью контроллера таблиц.

Это загрузит приложение с помощью диспетчеров навигации и табуляции.