5つ以上のタブ(正確には8つの子ビューコントローラ)を使用してプログラムでUITabBarControllerを作成します。UITabBarControllerDelegateのメソッドが呼び出されていない
私の目的は、タブを変更するためのカスタムトランジションアニメーションです。私はセットアップUITabbarControllerのデリゲートをし、方法実装:私は送信することで、タブを選択すると
- (nullable id <UIViewControllerAnimatedTransitioning>)tabBarController:(UITabBarController *)tabBarController
animationControllerForTransitionFromViewController:(UIViewController *)fromVC
toViewController:(UIViewController *)toVC
を:
[tabbarController setSelectedIndex: 6];
デリゲートのメソッドが呼び出されません。私は目に見えるタブのために例えば
[tabbarController setSelectedIndex: 3];
、すなわちを送信するときに
は、デリゲートのメソッドが正常に呼び出されました。
さらに1つの発言:現在選択されているビューコントローラが可視範囲0..3にあり、次のビューが可視範囲外0..3デリゲートのメソッドがまだ呼び出されています。現在選択されているビューコントローラが可視範囲0..3から外れており、次のビューが可視範囲0..3から外れている場合でも、デリゲートのメソッドは呼び出されません。私はカスタムトランジションアニメーションを失う。これは私の問題です。
私も
[tabbarController setSelectedViewController: someViewController];
代わりの
[tabbarController setSelectedIndex: 6];
それは動作しませんを送信しようとしました。 selectedIndex
を使用しているとき、彼らはNSNotFound
を返さなければならないという意味 - moreNavigationController
が画面に表示されていない場合でも、あなたの他のタブは、おそらくmoreNavigationController
であるよう
タブバーコントローラの 'delegate'プロパティが設定されていますか? – rmaddy
はい。私はセットアップデリゲート。私が[tabbar setSelectedIndex:3]を送信すると、デリゲートのメソッドが正しく呼び出されます。例えば目に見えるタブ用のものである。 – Ragara
いくつのタブがありますか? 6? 0ベースのインデックスなので、うまくいけません(クラッシュします)。 – brandonscript