То же представление в нескольких вкладках - PullRequest
4 голосов
/ 13 июля 2011

Мое приложение имеет UITabBar с четырьмя вкладками ... каждая со своим собственным UIViewController.У трех из них есть карта и другие общие элементы пользовательского интерфейса, в одном и том же месте на экране ... в двух из этих видов карта изначально скрыта.три просмотра одного и того же экземпляра одного контроллера представления .. и просто скрыть / показать элементы.Возможно ли это сделать с помощью панели вкладок?

Ответы [ 2 ]

3 голосов
/ 14 июля 2011

Не думаю, что те, кто ответил «да», достаточно внимательно прочитали ваш вопрос.Вы спросили, возможно ли "сделать эти три вида одинаковыми экземпляром одного и того же контроллера представления".Конечно, вы можете использовать три разных экземпляра одного и того же подкласса UIViewController, но я не думаю, что вы захотите использовать один и тот же экземпляр.

Я, честно говоря, никогда не пробовал этого, но логично не ожидалэто работает по нескольким причинам:

  1. Заголовок и значок, показанные для каждой вкладки, определяются через свойство tabBarItem контроллера представления.Если один и тот же экземпляр UIViewController появлялся несколько раз в массиве viewControllers контроллера панели вкладок, то каждая вкладка также будет использовать один и тот же tabBarItem, то есть у вас не будет возможности присвоить каждой вкладке уникальный ярлык и значок.

  2. Чтобы сохранить память при переключении с одной вкладки на другую, UIKit будет выгружать вид исчезнувшего контроллера представления.Если контроллер представления, на который вы переключились, является тем же экземпляром, что и исчезнувший, UIKit может попытаться выгрузить свое представление во время его отображения.Я ожидаю, что это создаст ошибки управления памятью, которые могут привести к сбою вашего приложения с сигналом EXC_BAD_ACCESS.

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

A.Используйте несколько экземпляров одного и того же подкласса UIViewController и задайте свойства для уникальной настройки каждого экземпляра.

B.Создайте базовый подкласс UIViewController, который реализует те аспекты, которые являются общими для всех трех вкладок, затем создайте три подкласса вашего базового класса, которые реализуют те аспекты, которые являются уникальными для каждой вкладки.

0 голосов
/ 13 июля 2011

Да, можно показать / скрыть элементы в любом представлении. Вы можете получить доступ к контроллеру панели вкладок, чтобы узнать, какая вкладка выбрана через свойство tabBarController вашего пользовательского контроллера представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...