16

Chcę wyłączyć domyślną akcję, gdy użytkownik dotknie elementu paska.Wyłącz akcję - użytkownik klika element tabulatora, aby przejść do kontrolera widoku administratora

Na przykład mam tabbar z Tab1, Tab2 i Tab3. W Tab1 użytkownik może nawigować między Widok1 a Widok3 (Widok1> Widok2> Widok3). Jeśli użytkownik jest w View3, a on dotknie Tab 1, aplikacja przenosi użytkownika do View1 (kontroler widoku root). Chcę wyłączyć tę funkcję. Nie chcę, aby dotknięcie Tab 1 otwierało wszystkie kontrolery widoku. Jak mogę to zrobić?

Edit:

Takie zachowanie jest trochę dziwne, ale poręczny skrót w przypadku głębokiej hierarchii!

można wdrożyć następujące metody UITabBarControllerDelegate wyłączenia tego systemu szeroki skrótu:

#pragma mark - 
#pragma mark UITabBarControllerDelegate 

- (BOOL)tabBarController:(UITabBarController *)tbc shouldSelectViewController:(UIViewController *)vc { 
    UIViewController *tbSelectedController = tbc.selectedViewController; 

    if ([tbSelectedController isEqual:vc]) { 
     return NO; 
    } 

    return YES; 
} 

Odpowiedz

19

jeśli spojrzeć na delegata UITabBarController istnieje metoda:

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

Jeśli zaimplementować to w swojej klasie , możesz sprawdzić, czy UIViewController jest już wyświetlany, a następnie zwrócić NO, co zatrzyma to.

miałem ten sam problem z obiektem ABPeoplePicker osadzony w UITabBarController, że naciśnięcie zakładce „Kontakty” po raz drugi, który został już wyświetlony uniemożliwiłoby kontrolę ABPeoplePicker pokazują „Grupy”

+0

działa! Dzięki. – Mustafa

Powiązane problemy