2013-07-16 3 views
22

UITabBarControllerのタブ間のトランジションをアニメーション化しようとしています。私はスワイプジェスチャー認識でUITabBarControllerDelegateのshouldSelectViewControllerをトリガしながら、UITabBarControllerの選択したタブをプログラムで設定する方法

[self.tabBarController setSelectedIndex:2]; 

を呼び出すことで、プログラムタブを切り替えるときしかし、shouldSelectViewController機能は私のUITabBarControllerDelegateデリゲートに呼び出されていないので、私のアニメーションがトリガされていません。

私は何をしたいのですか? shouldSelectViewController関数が呼び出されるようにプログラムによってタブスイッチを異なる方法でトリガーすることはできますか?

+1

はい、プログラマリーに代理人を呼び出すことができます。それが動作します。 [self.tabBarController setSelectedIndex:2];対応するtabbaritemにハイライトされた効果を与えます –

+0

@ Puneet UITabBarControllerDelegateデリゲートのshouldSelectViewControllerメソッドを呼び出すにはどうすればいいですか? – herrtim

+2

tabbarcontrollerをアプリケーションのルートとして設定している場合は、そのデリゲートメソッドをアプリケーションデリゲートで設定しておく必要があります。 AppDelegateのオブジェクトを作成することによって、他のビューのComtrollerから呼び出すことができます。 2つのパラメータを渡す必要があります.1つはtabbarControllerです。これはf4rom appdelegateとその他のViewControllerを表示することもできます。 –

答えて

45

tabBarControllerのデリゲートに- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewControllerを実装している場合は、手動で呼び出すことができます。

[self.tabBarController.delegate tabBarController:self.tabBarController shouldSelectViewController:[[tabBar viewControllers] objectAtIndex:2]]; 
[self.tabBarController setSelectedIndex:2]; 

これが役に立ちます。

+0

パーフェクト、ありがとう。上記のプネーネのコメントに加えて、私はそれを働かせました! – herrtim

+10

いいえ、デリゲートメソッドは手動呼び出しではありません!何かが発生した場合にメソッドを呼び出す必要があります。あなたの解決策では ' - (BOOL)tabBarController:shouldSelectViewController:'に 'return NO'を置くことができ、コントローラはまだ選択されます。 – Kuba

+0

Genius。どうもありがとう。 – NaXir

関連する問題