2

私は4つのタブを持つタブバーコントローラーを持っています。ユーザーがタブの1つを選択すると、新しいViewControllerのセットアップを実行します。つまり...[newVC.databaseid = self.datbaseid];

viewdidloadのデリゲートとして、tabviewcontrollerのコントローラーを設定しました。しかし、私は3つの方法を使おうとしましたが、1つだけが起動するようです。

-(void) tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 

発砲しますか、

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

-発火しないようです。これは、新しく提示したVCをセットアップするために使用する必要があるものです。

何が起こるかを確認するために、-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewControllerを使用してみました

そしてそれも起動しないようです(私はNOを返しましたが、違いはなく、NSLog()でログに記録されることもありません)。

これらのメソッドのどれも起動しない場合、デリゲートを間違って設定したと思いますが、1つのメソッドは起動しますが、2つは起動しません。何か案は?

ストーリーボードを使用してタブバーコントローラーを設定しました。

-(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
}
4

1 に答える 1

6

私は自分の問題を見つけました-私は私のせいでした。私は愚かなことをした。tabbarcontrollerのコントローラーであるクラスでself.tabbarcontroller.delegate=selfを使用してデリゲートをセットアップし、self.delegate=selfに変更しました。問題を修正しました。かなりばかげた間違い!最初の方法が実際にどのように機能していたかは奇妙ですが、ちょっと!

于 2014-07-09T07:21:47.263 に答える