0

私はストーリーボードを使用してUITabBarViewControllerおり、ナビゲーションコントローラーとして持っています。必要なのはshouldSelectViewController、デリゲート UITabBarControllerDelegate の一部であるメソッドを使用することです。

でこのメソッドをオーバーライドする方法がわかりませんCustomUiTabBarController

私はこのようなインターフェースを定義しようとしていました:

@interface CustomTabBarController : UITabBarController <UITabBarControllerDelegate>

次に、これを実装しました:

-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController {
//nothing yet
}

ただし、タブをクリックしても shouldSelectViewController は実行されません。例外が発生するため、ストーリーボードで CustomTabBarController クラスを TabBar のデリゲートとして設定することもできません。

ここで明らかに iOS の理解を漏らしています。手伝ってください。

4

1 に答える 1

2

まず、アプリケーションのビュー コントローラー フローから UITabbarController のオブジェクトを取得します。次に、appDelegate で tabbarcontroller のプロパティを作成し、その値を次のように割り当てます。

if([viewController isKindOfClass:[UITabBarController class]]){
            UITabBarController *objTabbarController = (UITabBarController *) viewController;
            self.objTabbarController = objTabbarController;
            self.objTabbarController.delegate = self;
        }

それにデリゲートを割り当て、

@interface AppDelegate : UIResponder <UIApplicationDelegate,UITabBarDelegate>

AppDelegate.m ファイルにメソッドを実装します。

ただshouldSelectViewControllerreturn YES;

そして、

 - (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    NSLog(@"tab selected index %d",tabBarController.selectedIndex);
}
于 2013-06-20T12:27:40.150 に答える