役立つかもしれないことの 1 つは、タブ間の遷移がいつ発生するかを知ることです。トランジションが発生するとすぐにゴースト ビューを表示すると、必要なことを行うのに十分な制御が得られる可能性があります。
これを行う方法は次のとおりです。最初に、UITabBarController を TabViewController にサブクラス化します (たとえば)。TabViewController に、次のメソッドを含めます。
// Pass this message on to views so they know when transitions are occuring
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
UIViewController <UITabBarControllerDelegate> *obj;
for ( obj in self.viewControllers ) {
if ( [obj respondsToSelector:_cmd] ) {
[obj tabBarController:tabBarController didSelectViewController:viewController];
}
}
}
UITabBarControllerDelegate プロトコルを採用するように、各タブ付きビュー クラスを設定します。次に、各クラスに次のようなメソッドを含めて、遷移イベントを「インターセプト」します。
// This is called when a transition between tabs happens
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
if ( [viewController isEqual:self] ) {
// Transitioning to me
// Do stuff
}
else {
// Transitioning to someone else
// Do stuff
}
}
(注:これを実装するよりクリーンな方法があるかもしれませんが、私にとってはうまく機能しています...)