Zakładając, że używasz UITabBarConroller
wszystkie swoje ViewControllers dziecko może Odziedzicz po klasie, która wykonuje dla ciebie wszystkie ciężkie ćwiczenia.
To jak mam zrobić to
class SwipableTabVC : UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let left = UISwipeGestureRecognizer(target: self, action: #selector(swipeLeft))
left.direction = .left
self.view.addGestureRecognizer(left)
let right = UISwipeGestureRecognizer(target: self, action: #selector(swipeRight))
right.direction = .right
self.view.addGestureRecognizer(right)
}
func swipeLeft() {
let total = self.tabBarController!.viewControllers!.count - 1
tabBarController!.selectedIndex = min(total, tabBarController!.selectedIndex + 1)
}
func swipeRight() {
tabBarController!.selectedIndex = max(0, tabBarController!.selectedIndex - 1)
}
}
Więc wszyscy twoi viewcontrollers które są częścią UITabControllers może dziedziczyć z SwipableTabVC
zamiast UIViewController.
Czy nie byłoby możliwe animowanie, jak w przykładzie na Androidzie youtube w oryginalnym poście? – user1689272
W przeszłości stworzyłem bardziej płynne elementy sterujące tabulatorem i było to o wiele bardziej niestandardowe rozwiązanie niż powyższy przykład paska kart. Ostatnim razem, gdy zrobiłem coś takiego, stworzyłem naprawdę długi kontroler widoku, który zawierał wszystkie kontrolery widoku przekroju ułożone obok siebie (miałem 5 sekcji, więc VC miał 5x szerokość ekranu). Nawigacja polegała na przesuwaniu kontenera VC w lewo i prawo. To nie jest najlepsza metoda, ponieważ wszystkie VC pozostają w pamięci przez cały czas, ale to najlepsze, co mogłem dostać za to, czego potrzebowałem. Nie mogę niestety pokazać żadnych fragmentów kodu z tego. – skladek
Od wersji iOS7 możliwe jest użycie 'UIPercentDrivenInteractiveTransition' z niestandardowym przejściem kontrolera widoku w celu uzyskania tego efektu. Zasadniczo będziesz miał kontroler nawigacyjny z niestandardową animacją push/pop do przesuwania. UIPercentDrivenInteractiveTransition pozwoli śledzić przejście jako panoramę, a nie przesunięcie. – skladek