感謝您閱讀我的問題。防止tabbar在特定索引處更改選項卡 - IOS
我試圖實現一個彈出菜單,當用戶單擊索引爲4的選項卡。所以我試圖防止tabbar切換索引4時按下viewcontroller。
這裏是我的代碼:
- (BOOL) tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
if(viewController == [tabBarController.viewControllers objectAtIndex:4]){
NSLog(@"NO");
return NO;
}else{
NSLog(@"YES");
return YES;
}
}
我實現了在viewDidLoad
的UITabBarControllerDelegate
和self.delegate = self;
和它的作品只是一個時間。
當我點擊索引4選項卡時,菜單顯示並且tabbar不切換視圖(GREAT),但是當我再次單擊它時,即使我得到Log「NO」,視圖也會更改。 這裏有什麼問題?
謝謝你的任何建議!
解決
由於Kasaname的回答下面我解決它通過添加的selectedIndex並將其設置爲一個標誌指數(prevtab)。我改變prevtab到最後選擇的選項卡的索引,exept當用戶選擇指數4 我的最終代碼:
- (BOOL) tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
if(viewController == [tabBarController.viewControllers objectAtIndex:4]){
self.selectedIndex = prevTab; //only change in this method
return NO;
}else{
return YES;
}
}
爲什麼不你只用空的ViewController的第四個選項卡? – NSDmitry
添加一個斷點來viewDidAppear/viewWill你的視圖控制器的方法。根據文檔,這種方法被稱爲所選視圖控制器是否改變。 –
@ProFFeSSoR:你是什麼意思的空ViewController的第四個選項卡?' –