У меня есть 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
элементов.
Дайте мне знать, если вам нужна дополнительная информация или вам нужен еще код.