可能有幫助的一件事是知道標籤之間的轉換何時發生。如果您在轉換髮生後立即顯示幻影視圖,則可能有足夠的控制權來執行您想要的操作。
下面是我如何做到這一點:首先,子類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
}
}
(注:有可能實現這種方法更簡潔的方式,但它一直致力於爲我好...)
你試圖打破UITabBarController的行爲。您可以在其中一個選項卡中放置UINavigationController,然後推送一個視圖控制器,但該選項卡仍將被選中。或者,你可以添加一個視圖到窗口,但你會基本上模態行爲。 – jessecurry