当我们触摸tabbarcontroller的tabbaritem时,会调用委托方法:
-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController;
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController;
但是当尝试以编程方式执行相同的操作时,即
[self.tabbarController setSelectedIndex:selectedIndexNo];
或
[self.tabBarController setSelectedViewController:[self.tabBarController.viewControllers objectAtIndex:0]];
不调用委托方法。这是什么原因?
答案 0 :(得分:5)
覆盖UITabBarController setSelectedIndex:
-(void)setSelectedIndex:(NSUInteger)selectedIndex
{
//must call super function.
[super setSelectedIndex:selectedIndex];
[self myMethod];
}
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
[self myMethod];
}
答案 1 :(得分:0)
当您通过代码自己设置它们时,您知道这是调用委托方法的时间。所以无论你想做什么,你都可以在编程设置索引时完成。假设您要调用tabbardelegate上的方法aMethod。您可以在设置索引后立即调用该方法。
[self.tabbarController setSelectedIndex:selectedIndexNo];
[self aMethod];