UITabBar перезагрузить UIView на ощупь - PullRequest
0 голосов
/ 14 июня 2011

Можно ли вызвать метод при касании значка панели вкладок, даже если он уже выбранный значок?Я хочу, чтобы он удалял подпредставление при касании, если подпредставление показывает.

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

Ответы [ 2 ]

4 голосов
/ 14 июня 2011

С Документация Apple для UITabBarDelegate :

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item

Отправляется делегату, когда пользователь выбирает элемент панели вкладок.(обязательно)

  • Как вы заметили, я думаю, и, как утверждают Apple Docs, это сообщение отправляется только при выбранной вкладке

  • Важное замечание: уже существует (не задокументировано?) по умолчанию UIKit поведение нажатия кнопки на выбранной панели вкладок:

    Если вкладка содержит UINavigationViewController , она отправит ей сообщение popToRootViewControllerAnimated:.Вы можете проверить это в любом приложении для iOS .

Так что будьте осторожны, прежде чем переопределять это поведение по умолчанию (и ожидаемое пользователем), а именно, обычно , плохая идея. Apple, вероятно, скрыла то, что вы хотите сделать, в своем UIKit API, специально .

Но если вы все равно хотитеделает это, вот несколько идей:

  • Небольшой, но не легкий взлом : Как только tabBar был отображен, рекурсивно просмотрите его дерево .subviews, чтобы найти (я ожидаю,должно быть подтверждено) UIButton унаследованные классы (= private UITabBarButtons или что-то в этом роде) для добавления ваших пар целевой / селектор в событие TouchUp (сначала вам может потребоваться удалить поведение по умолчанию, что может быть сложно)
  • Наихудшее решение, но может быть единственным : не используйте UITabBar, но пользовательский класс.Я почти уверен, что есть готовые компоненты с открытым исходным кодом, которые имитируют UITabBar, но извините, я никогда не использовал / не искал один.
0 голосов
/ 14 июня 2011

Вы можете иметь делегатов для контроллера UITabbar,

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController;

Также, пожалуйста, просмотрите этот документ: Протокол делегирования UITabBarController

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