У меня возникли проблемы с анимацией переходов между представлениями при изменении программного параметра UITabBarController.selectedIndex
.
Когда я нажимаю на значок TabBar
, анимация работает нормально, но когда я заменяю selectedIndex
на действие gestureRecognizer
.
Код перехода в классе контроллера TabBar:следующее:
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
if CanChangeTab {
guard let fromView = tabBarController.selectedViewController!.view, let toView = viewController.view else {
return false // Make sure you want this as false
}
if fromView != toView {
if (tabBarController.prevIndex > tabBarController.selectedIndex) {
UIView.transition(from: fromView, to: toView, duration: 0.3, options: [.transitionFlipFromLeft], completion: nil)
} else {
UIView.transition(from: fromView, to: toView, duration: 0.3, options: [.transitionFlipFromRight], completion: nil)
}
}
return true
} else {
return false
}
}
Распознаватель жестов вызывает следующую функцию, из которой вышеуказанный код не вызывается:
@objc func swiped(_ gesture: UISwipeGestureRecognizer) {
if (CanChangeTab) {
self.tabBarController?.prevIndex = (self.tabBarController?.selectedIndex)!
if gesture.direction == .left {
if (self.tabBarController?.selectedIndex)! < 4 { // set your total tabs here
self.tabBarController?.selectedIndex += 1
}
} else if gesture.direction == .right {
if (self.tabBarController?.selectedIndex)! > 0 {
self.tabBarController?.selectedIndex -= 1
}
}
}
}
Я не вижу, что нужно вызвать или переопределить, чтобы получитьанимации для базы жестов тоже меняются.