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 に答える