2014-02-26 54 views
0

我用下面的委託方法來設置tabBarController不彈出另一個子視圖控制器通過設置返回值NO,tabBarController代表沒有工作

-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController { 

    UIViewController *vc =[((UINavigationController *)viewController).viewControllers objectAtIndex:0]; 
    if ([vc isKindOfClass:NSClassFromString(@"LYAppCategoryViewController")]) { 

     UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"" message:@"" delegate:self cancelButtonTitle:@"" otherButtonTitles:@"", nil]; 
     [alert show]; 
     return NO; 

    } 
    else { 
     return YES; 
    } 
} 

但「NO」實際上返回後, tabBarController仍然彈出到另一個sub view controller。所以這有點令人費解,我錯了,使用它的情況?

來自Apple API的報價「YES如果應該選擇view controller’s選項卡或者NO如果當前選項卡應保持活動狀態。

非常感謝您的善意幫助。

+0

你可以給你放在方法中的代碼? – rdurand

+0

如果您使用故事板,您是否確定將您的UITabBarController的類設置爲您的子類?你的方法是否被調用(你可以用一個簡單的NSLog來檢查)? – rdurand

+0

我剛剛編輯了這個問題,請花些時間檢查一下,謝謝。 – piaChai

回答

0

我還是沒有得到之所以發生這種情況,但我加入的代碼是這樣實現我的目標:

 [tabBarController setSelectedViewController:[[tabBarController viewControllers] objectAtIndex:0]]; 
     [tabBarController setSelectedIndex:0]; 

tabBarController不會彈出另一個視圖控制器如果「迫使」流行的第一。