Zapobiegaj zmianie zakładki Tabbar w określonym indeksie - IOS

Dziękuję za przeczytanie mojego pytania.

Usiłuję zaimplementować menu podręcznego, gdy użytkownik kliknie kartę z indeksem 4. Tak więc próbuję zapobiec tabulator z przełączania viewcontroller, gdy indeks 4 jest wciśnięty.

Oto mój kod:

- (BOOL) tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController
{
    if(viewController == [tabBarController.viewControllers objectAtIndex:4]){        
        NSLog(@"NO");
        return NO;
    }else{
        NSLog(@"YES");
        return YES;
    }

}

ZaimplementowałemUITabBarControllerDelegate iself.delegate = self; wviewDidLoad i działa, ale tylko raz.

Po kliknięciu karty indeksu 4 menu pokazuje, a pasek kart nie przełącza widoku (ŚWIETNY), ale gdy klikam go ponownie, widok zmienia się, nawet jeśli otrzymam Dziennik „NIE”. Co może być problemem tutaj?

Dziękujemy za wszelkie sugestie!

ROZWIĄZANY

Dzięki odpowiedzi Kasaname poniżej rozwiązałem ją dodając selectedindex i ustawiając ją na indeks flag (prevtab). Zmieniam prevtab na indeks ostatniej wybranej karty, z wyjątkiem, gdy użytkownik wybierze indeks 4. Mój ostateczny kod:

- (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;
    }

}

questionAnswers(2)

yourAnswerToTheQuestion