Tab / навигационный гибрид, такой как iPod / Music - PullRequest
1 голос
/ 28 ноября 2009

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

В основном:

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

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

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

Ответы [ 3 ]

2 голосов
/ 28 ноября 2009

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

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

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

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

1 голос
/ 28 ноября 2009

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

0 голосов
/ 02 августа 2010

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

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

...