プログラムでタブを切り替えて、それぞれのナビゲーションコントローラーがルートビューコントローラーにポップするようにしようとしています。タブバーが手動またはプログラムで切り替えられたときに呼び出されるメソッドはありますか?
注:
-(void)tabBarController:didSelectViewController:
タブバーを手動で切り替えた場合にのみ呼び出されます
プログラムでタブを切り替えて、それぞれのナビゲーションコントローラーがルートビューコントローラーにポップするようにしようとしています。タブバーが手動またはプログラムで切り替えられたときに呼び出されるメソッドはありますか?
注:
-(void)tabBarController:didSelectViewController:
タブバーを手動で切り替えた場合にのみ呼び出されます
プログラムで didSelectViewController を呼び出すこともできます。ここでバビディの答えをチェックしてください:
メソッド「tabBarController:didSelectViewController:」をプログラムでトリガーする方法は?
FWIW、これを行う別の方法は、selectedViewController でオブザーバーを使用することです。
// Add Observer
// Note: tabBarController.selectedIndex is not observed as it does not call observeValueForKeyPath on manual switch
[self.tabBarController addObserver:self forKeyPath:@"selectedViewController" options:NSKeyValueObservingOptionNew context:@"changedTabbarIndex"];
// Method for Handling Observations
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSString *action = (__bridge NSString*)context;
if([action isEqualToString:@"changedTabbarIndex"])
{
// Stuff to do on selected Tab changed
}
}
// Change selectedViewController
[self.tabBarController setSelectedViewController:[[self.tabBarController viewControllers] objectAtIndex:kSomeTab]];