2

カスタム TabBar コントローラー クラスを備えたアプリを入手しました。

タブバーコントローラーのデリゲートメソッドを実装しようとしました:

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    NSLog(@"%i",tabBarController.selectedIndex);
}

しかし、うまくいきません。なんで?

ViewDidLoad私は書く:

self.tabBarController.delegate = self;

そして .hi 実装では:

@interface BaseViewController : UITabBarController <UITabBarControllerDelegate>
4

2 に答える 2

1

あなたは、それがあなたのカスタム TabBarController だと言いました。あなたが行ったカスタマイズは何ですか?TabBar パネルを変更し、それを独自のものに置き換えて使用する場合

setSelectedIndex:
setSelectedViewController:

メソッドを手動で呼び出す場合は、デリゲートのメソッドも手動で呼び出す必要があります。

Appleのドキュメントによると:

タブ バーで発生する可能性があるユーザー開始の変更には、次の 2 種類があります。

  • ユーザーはタブを選択できます。
  • ユーザーはタブを再配置できます。

どちらの種類の変更も、UITabBarControllerDelegate プロトコルに準拠するオブジェクトであるタブ バー コントローラーのデリゲートに報告されます。

UITabBarControllerDelegate プロトコル リファレンスも確認してください。

iOS v3.0 以降では、タブ バー コントローラーは、選択されたビュー コントローラーが変更されたかどうかに関係なく、このメソッドを呼び出します。さらに、ユーザーがタブ バーをタップした場合にのみ呼び出され、コードがタブ バーの内容をプログラムで変更した場合には呼び出されません。

デリゲートは、ユーザーが UITabBar コントロールを操作した場合にのみ応答します。

于 2012-03-03T10:25:43.413 に答える