5

当我们触摸 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]];

不调用委托方法。这是什么原因?

4

2 回答 2

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];
}
于 2013-07-31T03:21:01.753 回答
0

当您通过代码自己设置它们时,您会意识到这是调用委托方法的时间。因此,无论您想做什么,都可以在以编程方式设置索引时进行。假设您想在被调用的 tabbardelegate 上调用方法 aMethod。您可以在设置索引后立即调用该方法。

[self.tabbarController setSelectedIndex:selectedIndexNo];
[self aMethod];
于 2013-03-08T05:12:57.283 回答