1

ストーリーボードに単純な TabBar-Controller があります。ViewController 1 には、それ自体の周りに Navigation Controller があります。ViewController 2 にはありません。

アプリが起動すると、ViewController 1 が最初に表示されます。

次のメソッドを実装する必要があります。

-(void)tabBar:(UITabBar *)tabBar didSelectItem(UITabBarItem *)item

しかし、UITabBar のデリゲートを設定できません。ViewController 1 でデリゲートを設定したいのですが、IB ではデリゲート プロパティを表示できますが、線を引くことができません。プログラムでデリゲートを設定しようとしました。しかし、どこに設定しても、アプリは常にクラッシュします。では、どこで UITabBar のデリゲートを設定する必要がありますか?

4

2 に答える 2

1

App Delegate をタブ バーのデリゲートにする必要があります。ストーリーボードのタブ バー コントローラーから AppDelegate (おそらくファイルの所有者) にドラッグできるはずです。

コードでは、タブ バー コントローラーへの参照を取得して に設定できtbc.delegate = selfますdidFinishLaunchingWithOptions:

<UITabBarControllerDelegate>どちらのシナリオでも、最初にインターフェイス宣言に追加して、デリゲートがデリゲート メソッドをリッスンするようにしてください。

于 2013-08-28T11:25:26.860 に答える
1

この問題の解決策を見つけました。私がしたのは次のことだけで、UITabBarController のクラスを作成しました。プロトコルをヘッダーファイルに入れました。.m に切り替えて - (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)itemメソッドを実装しました。以上です。デリゲートを明示的に設定する必要はありません。デリゲート メソッドが呼び出されます。

于 2013-08-29T10:01:35.630 に答える