2012-04-11 12 views
0

クラスtabBarControllerがあり、selectedIndexプロパティが変更されるたびにカスタムメソッドをトリガーしたいと思います。これをどのように達成するのですか?プロパティの変更についてメソッドをトリガーするにはどうすればよいですか?

これはtabBarControllerは時間のインスタンス内で宣言されている方法ですvarsは:タブのインデックスと呼び出したいメソッド、その結果を決定する

BaseViewController *tabBarController; 

答えて

5

使用UITabBarの-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item方法を。

+0

詳細キャブはこちらをご覧ください。 http://developer.apple.com/library/ios/#documentation/uikit/reference/UITabBarDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intf/UITabBarDelegate –

+0

これは、実装するクラスのmファイルに入っていますか? UITabBarControllerDelegateプロトコル? – zakdances

+0

はい、正確です。 – CodaFi

3

これは、Key-Value-Observingに最適な候補です。基本的には、値が変更されると、通知は発生し、変更の値を監視したいと定義したobserversによって通知されます。オブザーバーと自分自身を確立してobserveValueForKeyPath:メソッドを実装するときは、どのような方法ででも起動できます。 http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html#//apple_ref/doc/uid/10000177-BCICJDHA最初の

少し手ごわいが、基本的に魔法正しく使用:

はここで良い出発点です。

編集:それは簡単だったとは思わなかったUITabBarController。はい、デリゲートメソッドを使用します。 KVOはこのために不当です。

+0

一般に、KVOは素晴らしいですが、デリゲートメソッドが利用可能な場合は、設定がはるかに簡単です。 – benzado

0

セッターを作成します。

- (void)setSelectedIndex:(NSInteger*)integer 
{ 
    // Do stuff 
    selectedIndex=integer; 
    // Or: [super setSelectedIndex:integer]; 
} 
+0

このセッターを使用するにはサブクラスを作成する必要がありますか?どこに行くの? – zakdances

0

使用delegate方法-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item

関連する問題