Как сделать так, чтобы одна кнопка панели вкладок ссылалась на два вида / контроллера в iOS - PullRequest
1 голос
/ 14 февраля 2012

Я сейчас разрабатываю приложение для iOS с навигацией по панели вкладок.

У меня есть два экрана, на которых отображается одна и та же информация, но в разных форматах (скажем, список и сетка).* Два экрана настолько различны, что для них требуются отдельные контроллеры.

Пользователи могут переключаться между двумя видами с помощью кнопки общей панели управления ( toggle ) вверху.

Сценарий:

Пользователь нажимает кнопку «Места» в первый раз, и она показывает места в виде списка.Они нажимают «Сетка», чтобы увидеть те же места, которые отображаются в виде сетки.
Пользователь нажимает другую кнопку панели вкладок, чтобы перейти на другой экран.Когда они снова нажимают кнопку «Места», приложение запоминает их последний просмотренный экран для мест, где была сетка, поэтому отображается вид сетки.Пользователь может затем переключиться обратно к представлению списка.и т.д. ...

Кто-нибудь может порекомендовать лучший подход для достижения этой цели?

Ответы [ 2 ]

0 голосов
/ 07 ноября 2013

Я пытался добиться того же самого, и на самом деле это можно сделать с помощью базовой настройки TabBarController, NavigationControllers, ViewControllers, push-сегментов и раскручивания.

TabBarController
   |==> NavigationController --> PlacesController(grid view) --(push segue from nav bar)--> PlacesController(list view)
   |==> NavigationController --> OtherController
   |...

Убедитесь, что у вас естьОткатите переход от контроллера представления списка к контроллеру представления сетки.

Если вы переключаетесь между представлениями, затем переходите на другую вкладку (например, otherController) и возвращаетесь, вы вернетесь к последнему просмотру, который вы видели, потому чтоэто то, что находится на вершине стека NavigationController.

0 голосов
/ 14 февраля 2012

Один из подходов заключается в использовании одного контроллера представления, который управляет обоими представлениями.Таким образом, вам не нужно беспокоиться о синхронизации данных или нарушении нормальной функции UITabBarController - есть только один контроллер.Кроме того, не пытайтесь перегрузить значение вкладки для этого контроллера.Вместо этого добавьте кнопку к обоим представлениям, которая указывает контроллеру переключиться на другое представление.Это будет проще для вашего построения и (что более важно) для пользователя, чтобы понять.Нелегко заставлять знакомые элементы управления выполнять незнакомые трюки.

Если ваши контроллеры вида таковы, что объединить их в один будет сложно, то вы можете использовать два контроллера и просто поменять их местами со вкладками,изменение массива viewControllers контроллера панели вкладок.Вы по-прежнему можете избежать синхронизации данных между ними, если оба контроллера ссылаются на одну и ту же модель данных.

...