以编程方式设置setSelectedIndex没有doSelectViewController

时间:2012-08-13 10:02:24

标签: ios4

在我的iOS应用程序中,当我设置setSelectedIndex时,它不会调用 以下功能

(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController

还有其他选择吗?

2 个答案:

答案 0 :(得分:0)

来自UITabBarControllerDelegate documentation

  

tabBarController:didSelectViewController:

     

“[..]仅在响应标签栏中的用户点击时调用它,并且当您的代码以编程方式更改标签栏内容时不会调用它。”

因此,我建议您找到另一种方法来实现所需的功能。

一种选择是将tabBarController:didSelectViewController:中的任何逻辑移动到视图控制器中的另一个方法,并在委托方法(上面)和运行setSelectedIndex的代码中调用该方法在你的UITabBarController实例上。

答案 1 :(得分:0)

如果您需要在标签更改时进行响应,无论它是否来自水龙头,我建议覆盖setSelectedIndex:

-(void)setSelectedIndex:(NSUInteger)selectedIndex
{
    [super setSelectedIndex:selectedIndex];
    [self handleSelectionChanged];
}

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    [self handleSelectionChanged];
}

- (void)handleSelectionChanged
{
    // Do something
}