2013-03-08 4 views
1

У меня есть 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 
} 
+0

Я нашел свою проблему - я был моей ошибкой. Я сделал что-то глупое. я установил делегата с self.tabbarcontroller.delegate = self в классе, который был контроллером для контроллера табуляции , меняя его на self.delegate = self; исправил проблему. довольно глупая ошибка! странно, как первый метод действительно работал, но эй! –

+0

aI Хотя это было не так, я думаю, что другая общая причина для метода, который не называется, может быть просто не прикреплен к контроллеру в раскадровке. – Antek

ответ

5

Я нашел свою проблему - я был моей ошибкой. я сделал что-то глупое. Я установил делегат с self.tabbarcontroller.delegate = self в классе, который был контроллером для контроллера tabbar, который менял его на self.delegate = self; устранил проблему. довольно глупая ошибка! странно, как первый метод действительно работал, но, эй!

+0

Благодарим вас за то, что вы обновили свой вопрос. Это помогло мне :) –

+0

Да, это странно. Подкласс UITabBarController не установлен как сам по себе делегат по умолчанию. – yehe

Смежные вопросы