Я пытаюсь обнаружить нажатие другой вкладки из контроллера представления, встроенного в контроллер табуляции, используя один из методов делегата tabbarcontroller. Тем не менее, я смущен тем, могут ли эти методы быть в контроллерах отдельных представлений или они должны быть в классе uitabbarcontroller. Я хотел бы иметь их в контроллерах представления, где у меня есть доступ ко всем свойствам и локальным переменным этих VC, а не к классу tabbarcontroller.IOS: UITabBarControllerDelegate Methods from tableviewcontroller
Я также смущен о том, как установить делегат.
В контроллере tableview, встроенном в контроллер tabbar, я объявил протокол делегата, а затем включил следующий код. Однако метод не стреляет. Можно ли поместить этот метод делегата в VC, и если да, то как и где я должен установить делегат, чтобы он загорелся?
- (void)tabBarController:(UITabBarController *)tabBarController
didSelectViewController:(UIViewController *)viewController
{
NSLog(@"DIDSELECTVC FIRED");
NSLog(@"controller class: %@", NSStringFromClass([viewController class]));
NSLog(@"controller title: %@", viewController.title);
if (viewController == tabBarController.moreNavigationController)
{
tabBarController.moreNavigationController.delegate = self;
}
}
Я нашел, что это легче сделать 'UITabBarController' подкласс и обрабатывать методы там. См. [Этот ответ] (https://stackoverflow.com/a/47861294/3681880). – Suragch