Где я могу реализовать UITabBarControllerDelegate? - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть tabBar, который реализован программно. Я хотел бы иметь возможность отслеживать, нажимает ли пользователь определенный элемент tabBar (или кнопку, или как она там называется). Насколько я понимаю, это делается путем наследования от класса UITabBarControllerDelegate.

Если я реализую код UITabBarControllerDelegate в одном из классов, к которому перемещаются элементы tabBar, метод didSelectViewController работает:

@interface ExperiencesContainerViewController () <ContainerProtocol, UITabBarControllerDelegate>
@implementation ExperiencesContainerViewController

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {

    NSLog(@"PRESS");
}

- (void)viewDidLoad {
    [super viewDidLoad];

    self.tabBarController.delegate = self;

}

Теперь это работает, но это работает слишком хорошо, так как срабатывает не только когда я нажимаю элемент этого конкретного class, но и любой другой элемент, который я нажимаю, даже если эти элементы переходят в совершенно другой класс.

Я бы хотел method срабатывает только тогда, когда я нажимаю элемент tabBar этого конкретного класса. И тогда, я думаю, я бы повторил этот шаблон и в других classes, и эти методы сработали бы только при нажатии на соответствующий элемент tabBar.

Я прочитал это:

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

И ответ предполагает, что я должен реализовать UITabBarControllerDelegate в class, который обрабатывает настройку tabBar. Я попробовал это, но тогда method не срабатывает. Я думаю, что это связано с тем, что delegate внезапно устанавливается на class, который не связан ни с одним из tabBar элементов.

Дайте мне знать, если вам нужна дополнительная информация или вам нужен еще код.

1 Ответ

0 голосов
/ 13 февраля 2020

Я полагаю, что ссылка, которую вы уже разместили, имеет право ответов для вас.

Вам необходимо создать класс, который будет обрабатывать установку и показ tabBar инструмента UITabBarDelegate, не UITabBarControllerDelegate. Затем вы можете использовать правильный метод делегата для извлечения при щелчке элемента tabBar и проверки того, интересует ли вас его.

Нужный метод - tabBar:didSelectItem: (отправляется делегату, когда пользователь выбирает элемент панели вкладок).

Подробнее здесь .

...