Dzięki za przeczytanie mojego pytania.Zapobieganie zmianie tabulatora w określonym indeksie - IOS
Próbuję zaimplementować menu kontekstowe, gdy użytkownik kliknie kartę z indeksem 4. Tak więc staram się zapobiec przełączaniu kontrolki viewbar po naciśnięciu indeksu 4.
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;
}
}
mam wdrożony UITabBarControllerDelegate
i self.delegate = self;
w viewDidLoad
i to działa, ale tylko jeden raz.
Po kliknięciu na kartę indeksu 4 pojawia się menu i tabbar nie przełącza widoku (GREAT), ale po ponownym kliknięciu widok zmienia się, nawet jeśli otrzymam dziennik "NIE". Co może być problemem?
Dzięki za wszelkie sugestie!
SOLVED
Dzięki za odpowiedź Kasaname poniżej Rozwiązałem go dodając SelectedIndex i ustawić go na indeksie flagi (prevtab). Zmienić prevtab do indeksu ostatniej wybranej zakładki, z wyjątkiem stałych, gdy użytkownik wybierze indeks 4. Moja ostatnia 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;
}
}
Dlaczego nie używasz tylko pustego ViewController na czwartej karcie? – NSDmitry
Dodaj punkt przerwania, aby wyświetlić metodyDidAppear/viewWillAppear kontrolera widoku. Zgodnie z dokumentacją ta metoda nazywana jest niezależnie od tego, czy wybrany kontroler widoku zmienił się. –
@ProFFeSSoR: Co masz na myśli przez 'pusty ViewController dla czwartej karty?' –