У меня есть tabbarcontroller с 4 вкладками. когда пользователь выбирает одну из вкладок, я хочу выполнить некоторую настройку для нового контроллера представления, то есть ... [newVC.databaseid = self.datbaseid];UITabBarControllerDelegate - методы не стреляют для делегата?
Я установил контроллер для контроллера tabview, поскольку он является делегатом в viewdidload. однако я попытался использовать 3 метода, но только один, похоже, срабатывает.
-(void) tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
ДЕЛАЕТ огонь,
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
- кажется, не срабатывает. это тот, который мне нужно использовать для настройки моего недавно представленного VC.
просто чтобы посмотреть, что происходит, я попытался с помощью - (BOOL) tabBarController: (UITabBarController *) tabBarController shouldSelectViewController: (UIViewController *) ViewController
и что, кажется, не срабатывает либо (я вернулся NO и его не имеет никакого значения, и ничто не может быть зарегистрировано в NSLog();
, если НИКТО этих методов не срабатывает, я думаю, что я настроил делегата неправильно, но один метод срабатывает, но два не делают. ?
Я установил tabbarcontroller с помощью раскадровки.
-(void) tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
NSLog(@"item selected");
//THIS DOES GET LOGGED
}
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
NSLog(@"new VC");
//this does not get logged
}
- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
return NO;
//this doesnt stop any views being presented
}
Я нашел свою проблему - я был моей ошибкой. Я сделал что-то глупое. я установил делегата с self.tabbarcontroller.delegate = self в классе, который был контроллером для контроллера табуляции , меняя его на self.delegate = self; исправил проблему. довольно глупая ошибка! странно, как первый метод действительно работал, но эй! –
aI Хотя это было не так, я думаю, что другая общая причина для метода, который не называется, может быть просто не прикреплен к контроллеру в раскадровке. – Antek