2010-12-12 18 views
1

のdidSelectViewControllerイベントにビューコントローラを開くキャンセルすることができます私はUITabBarControllerDelegateイベントを実装:上記の関数では、どのように私はUITabBarControllerDelegateプロトコル

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{ 
    if (viewController == [tabBarController.viewControllers objectAtIndex:0]) { 
     //HERE:check some condition and cancel opening the viewController if needed 
    } 
} 

を、いくつかの条件をチェックした後、私はアプリは他にいくつかのことを行うたい(すなわち、別のを開きますビュー・コントローラー)を使用することができます。イベントの振る舞い:

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController 

は私の要求と一致しません。

+0

shouldSelectViewControllerがあなたの要求にどのように合致しないのですか?あなたの状態を確認するだけです。それが 'something else'部分と一致する場合はNOを返し、そうでない場合はそのメソッドでYESを返します。 – mrueg

+0

私はバーアイテムに照明効果を持たせ、ユーザーがそれに触れたときに別のビューを開くことを望みます。 shouldSelectViewControllerを使用してNOを返す場合、これらの項目には何の影響もありません。 –

答えて

1

shouldSelectViewControllerのNOを返信しても、別のタブへの移行がキャンセルされない場合は、代理人などが間違っている可能性があります。実行中に関数に実際に到達しているかどうかを確認してください。

shouldSelectViewControllerでテストして、NOを返し、他のビューコントローラを提示することは、タブ選択に他のビューを表示する正しい方法です。

関連する問題