Я пытаюсь перейти влево и вправо между моими VenueListVC
и VenueDetailsVC
. Но я получаю следующую ошибку: 'Application tried to present modally an active controller <VenueDetailsVC: 0x104098980>.'
, когда я возвращаюсь к исходному VC, используя SegueFromLeft
переход с назначенным классом.
У меня есть следующие классы; SegueFromRight
, который преобразует и анимирует целевой VC справа и класс SegueFromLeft
чуть ниже него, нацеленный на достижение чего-то похожего, но скорее с левой стороны, добавляя '-' минус в translationX: -src.view.frame.size.width
.
class SegueFromRight: UIStoryboardSegue {
override func perform() {
let src = self.source
let dst = self.destination
src.view.superview?.insertSubview(dst.view, aboveSubview: src.view)
dst.view.transform = CGAffineTransform(translationX: src.view.frame.size.width, y: 0)
UIView.animate(withDuration: 0.25,
delay: 0.0,
options: .curveEaseInOut,
animations: {
dst.view.transform = CGAffineTransform(translationX: 0, y: 0)
},
completion: { finished in
src.present(dst, animated: false, completion: nil)
}
)
}
}
class SegueFromLeft: UIStoryboardSegue {
override func perform() {
let src = self.source
let dst = self.destination
src.view.superview?.insertSubview(dst.view, aboveSubview: src.view)
dst.view.transform = CGAffineTransform(translationX: -src.view.frame.size.width, y: 0)
UIView.animate(withDuration: 0.25,
delay: 0.0,
options: .curveEaseInOut,
animations: {
dst.view.transform = CGAffineTransform(translationX: 0, y: 0)
},
completion: { finished in
src.present(dst, animated: false, completion: nil)
}
)
}
}
У меня есть prepareForUnwind
IBAction в моем VenueListVC
(источник VC)
@IBAction func prepareForUnwind (segue: UIStoryboardSegue){
}
Я использовал точку выхода в VenueDetailsVC
(целевой VC), связанный с prepareForUnwind
IBaction VenueListVC
(исходный VC).
Я добавил класс SegueFromLeft
в последовательность.
Segue right работает отлично, когда я возвращаюсь назад, он выдает ошибку выше, но не до представления исходного VC.