2013-07-16 73 views
22

我試圖爲我的UITabBarController中的選項卡之間的轉換設置動畫,當我按下選項卡按鈕時工作正常。然而,當我以編程方式切換標籤通過調用我如何以編程方式設置UITabBarController的選定選項卡,同時也觸發UITabBarControllerDelegate中的shouldSelectViewController

[self.tabBarController setSelectedIndex:2]; 
在滑動手勢識別

,該shouldSelectViewController功能不被稱爲我的UITabBarControllerDelegate代表,因此我的動畫沒有被觸發。

有沒有辦法實現我想要的?我是否可以通過不同的方式以不同的方式觸發標籤開關,以便調用shouldSelectViewController函數?

+1

是的,你可以逐步調用委託。它會工作。 [self.tabBarController setSelectedIndex:2];將突出顯示的效果給相應的tabbaritem –

+0

@Puneet如何調用UITabBarControllerDelegate委託的shouldSelectViewController方法? – herrtim

+2

如果您已將tabbarcontroller設置爲應用程序的根目錄,則必須在應用程序代理處設置其委託方法。 所以你可以通過創建一個AppDelegate的對象來從其他視圖Comtrollers中調用它。你需要傳遞兩個參數,一個是tabbarController,你可以獲得f4rom appdelegate,另一個是你想要顯示的ViewController。 –

回答

45

如果您在tabBarController的委託中實施了- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController,那麼您可以手動調用它。

[self.tabBarController.delegate tabBarController:self.tabBarController shouldSelectViewController:[[tabBar viewControllers] objectAtIndex:2]]; 
[self.tabBarController setSelectedIndex:2]; 

希望這會有所幫助。

+0

完美,謝謝。與上面的Puneet的評論一起,我得到了它的工作! – herrtim

+10

不,代表方法不適用於手動呼叫!如果發生某事,應該調用該方法。用你的解決方案,我可以把'return NO'放在' - (BOOL)tabBarController:shouldSelectViewController:'中,並且控制器仍然會被選中。 – Kuba

+0

天才。非常感謝。 – NaXir

相關問題