Вопрос

Я работаю над приложением, в котором я хотел бы использовать тот же гибрид навигации и панелей вкладок, что и в приложении iPod / Music для навигации по спискам воспроизведения.

В основном:

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

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

Каков наилучший базовый подход для этого?

Это было полезно?

Решение

Я создал приложения, которые делают именно это.Лучший способ подумать об этом - начать с самой узкой части, отдельных контроллеров просмотра.В примере iPod это будет включать контроллеры для исполнителей, Альбомов, списков воспроизведения, песен и т.д.Примечание. если вы нажмете на список воспроизведения, вы перейдете к списку песен.Это два отдельных контроллера представления.

На каждой из вкладок, которые вы видите в приложении iPod, есть навигационный контроллер.Навигационный контроллер оборачивает контроллеры корневого представления вкладок приложения.И затем каждый из навигационных контроллеров устанавливается в качестве ViewControllers контроллера tab.Код будет выглядеть примерно так

FirstTabViewController *first = [[FirstTabViewController alloc] init...];
SecondTabViewController *second = ...;

UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:first];
UINavigationController *nav2 = [[UINavigationController alloc] initWithRootViewController:second];

myTabBarController.viewControllers = [NSArray arrayWithObjects:nav1, nav2, nil];
// Then make sure to release things to avoid leaks

Если бы вы хотели обработать переход, скажем, из списка воспроизведения-> Список песен в выбранном списке воспроизведения, вы бы сделали это в Playlist viewcontroller ([self.navigationController pushViewController:theListOfSongsViewController animated:SUREWHYNOT]).

Другие советы

Пока что я смотрю на UITabBarController с UINavigationControllers на каждой панели с небольшим пользовательским кодом для возврата контроллера навигации на целевой вкладке обратно в корневой каталог при переключении вкладок.

У Apple есть отличная документация по объединению контроллеров просмотра (контроллеры навигации внутри контроллеров вкладок).

http://developer.apple.com/iphone/library/featuredarticles/ViewControllerPGforiPhoneOS/CombiningViewControllers/CombiningViewControllers.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top