2011-01-31 2 views
6

Mam konfigurację UITabBarController z 2 kontrolerami UINavigationController.Podwójne kliknięcie na karcie UITabBarControllers przechodzi do katalogu głównego kontrolera nawigacji

Jeden UINavigationController ma jeden UIViewController, drugi UINavigationController ma dwa UIViewControllers. Jeśli następnie przejdziesz do drugiego UIViewController i klikniesz kartę, która jest już wybrana, przeniesie Cię do katalogu głównego UINavigationController (to byłby pierwszy UIViewController).

Czy istnieje sposób, aby temu zapobiec? Nie chcę, aby użytkownik mógł kliknąć już wybraną kartę, aby przejść do katalogu głównego kontrolera nawigacyjnego.

Odpowiedz

17

Aby to zrobić, musisz zaimplementować funkcję w delegacie aplikacji, aby odebrać wywołania z kart paska.

W pliku delegate.m aplikacji w sposobie didfinishlaunching, dodać tę linię

[tabBarController setDelegate:self]; 

następnie wdrożyć tę metodę (również w aplikacji delegata):

- (BOOL)tabBarController:(UITabBarController *)theTabBarController shouldSelectViewController:(UIViewController *)viewController 
{ 
    return (theTabBarController.selectedViewController != viewController); 
} 

ta jest wywoływana jako część protokołu delegatów karty i zatrzyma wybór karty, jeśli jest już wybraną.

Nadzieję, że pomaga.

+0

To działa, z wyjątkiem mojego TabBarController był częścią innego ViewController. Zamiast ustawiania delegata w delegacie aplikacji ustawiam go w odpowiednim ViewControllerze. Dzięki! – Mausimo

+1

Zamiast umieszczać to w delegacie aplikacji, podklasowałem TabBarViewController i ustawiłem delegat podklasy na self.delegate = self. Następnie w storyboardie wybieram podklasę dla mojego kontrolera tabbarviewcontroller. – nearpoint

Powiązane problemy