Я относительно новичок в программировании и в настоящее время пытаюсь создать приложение с тремя (если возможно больше) контроллерами представлений. Я сделал учебник (https://www.youtube.com/watch?v=B9sH_VxPPo4&t=505s), в котором я научился анимации между двумя контроллерами представлений после нажатия пользовательской кнопки. Все это отлично работало.Как оживить переход между 3 или более контроллерами представления с кнопками в SWIFT 3?
Но теперь я пытаюсь реализовать другой контроллер вида (ThirdViewController) и вторую кнопку (showThirdVCButton).
Перемещение идеально подходит для обеих кнопок, но анимация возвращается к стандартной анимации.
Это мой код в начальном контроллере представления:
import UIKit
class ViewController: UIViewController, UIViewControllerTransitioningDelegate {
@IBOutlet weak var showSecondVCButton: UIButton!
@IBOutlet weak var showThirdVCButton: UIButton!
let transition = CircularTransition()
override func viewDidLoad() {
super.viewDidLoad()
//I customise my buttons here
showSecondVCButton.layer.cornerRadius = showSecondVCButton.frame.size.width/2
showThirdVCButton.layer.cornerRadius = showSecondVCButton.frame.size.width/2
}
//The destination for each button is declared here and the animation style
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "secondVCSegue" {
let secondVC = segue.destination as! SecondViewController
secondVC.transitioningDelegate = self
secondVC.modalPresentationStyle = .custom
}
if segue.identifier == "thirdVCSegue" {
let thirdVC = segue.destination as! ThirdViewController
thirdVC.transitioningDelegate = self
thirdVC.modalPresentationStyle = .custom
}
}
func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
transition.transitionMode = .present
if showSecondVCButton.isTouchInside == true {
transition.startingPoint = showSecondVCButton.center
transition.circleColor = showSecondVCButton.backgroundColor!
}
if showThirdVCButton.isTouchInside == true {
transition.startingPoint = showThirdVCButton.center
transition.circleColor = showThirdVCButton.backgroundColor!
}
return transition
}
func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
transition.transitionMode = .dismiss
if showSecondVCButton.isTouchInside == true {
transition.startingPoint = showSecondVCButton.center
transition.circleColor = showSecondVCButton.backgroundColor!
}
if showThirdVCButton.isTouchInside == true {
transition.startingPoint = showThirdVCButton.center
transition.circleColor = showThirdVCButton.backgroundColor!
}
return transition
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
Спасибо за вашу помощь !!
Вы добавили точка останова в коде 'if segue.identifier ==" thirdVCSegue "{...}', чтобы убедиться, что вы туда попали? Ошибка в идентификаторе segue может помешать запуску этого кода ... – Rob