Есть ли какие-либо события панели вкладок для уведомления, когда кто-то скрывает / показывает панель вкладок? - PullRequest
6 голосов
/ 30 декабря 2010

У меня есть контроллер Nav внутри пользовательского подкласса контроллера панели вкладок, который я создал.

Я хочу знать из (настраиваемой) панели вкладок всякий раз, когда один из отображаемых контроллеров пытается скрыть или показать панель вкладок.(например, при перемещении VC с hidesBottomBarWhenPressed = YES на контроллер Nac).

Короче говоря, я хочу получать уведомления о событиях, скрывающих / отображающих панель вкладок, но не могу найти что-либо в справке Apple.Я попытался посмотреть на UITabBar, UITabBarDelegate, UITabBarController и UITabBarControllerDelegate, но, похоже, все они предоставляют только функциональность, связанную с элементами панели вкладок.

Ответы [ 2 ]

10 голосов
/ 14 февраля 2011

Если вы используете контроллер панели вкладок, UIKit прямо заявляет, что каждый экземпляр контроллера навигации, который будет отображаться в контексте контроллера панели вкладок, будет находиться среди его свойства viewControllers. Теперь у каждого экземпляра UINavigationController есть делегат, который определяет метод navigationController:willShowViewController:animated:, который позволяет узнать, когда на него помещен контроллер представления.

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

Алгоритм, используемый для скрытия панели вкладок контроллера панели вкладок, заключается в следующем: когда контроллер представления помещается в контроллер навигации, который сам содержится в контроллере панели вкладок, если какой-либо контроллер представления находится в стеке навигации контроллера навигации имеет свойство hidesBottomBarWhenPushed, тогда панель вкладок должна быть скрыта.

Таким образом, панель вкладок скрыта, когда выбран контроллер навигации и для одного из контроллеров представления в его стеке установлено свойство hidesBottomBarWhenPushed.

0 голосов
/ 30 декабря 2010

Создайте подкласс UINavigationController и реализуйте установщик за hidesBottomBarWhenPush (или создайте подкласс UIViewController, чтобы непосредственно создать подкласс метода hidesBottomBarWhenPhed) и делегировать вызов UITabBar (через прямой вызов или NSNotification).

...