Я сейчас начинаю тянуть волосы за этот, так что некоторая помощь будет высоко ценится.
У меня есть переход (слайд справа), который прекрасно работает и показывает новый view
справа.
Я сейчас пытаюсь вернуться и раскрутить переход с помощью следующего пользовательского класса.
Кажется, все работает нормально, и я вижу, как первый вид сдвигается назад слева, но проблема в том, что он сразу исчезает из вида.
Единственный звонок dismiss
, который у меня есть, находится на originalVC
, который в приведенном ниже классе раскрутки является представлением, от которого я отказываюсь, от которого я хочу отказаться.
//Segue: Unwind From Right
class UnwindSegueFromRight: UIStoryboardSegue {
override func perform(){
let originalVC = self.source
let destinationVC = self.destination
originalVC.view.superview?.insertSubview(destinationVC.view, aboveSubview: originalVC.view)
destinationVC.view.transform = CGAffineTransform(translationX: -originalVC.view.frame.size.width, y: 0)
UIView.animate(withDuration: 0.25,
delay: 0.0,
options: UIViewAnimationOptions.curveEaseInOut,
animations: {
destinationVC.view.transform = CGAffineTransform(translationX: 0, y: 0)
},
completion: { finished in
originalVC.dismiss(animated: false, completion: nil)
})
}
}//end class
РЕДАКТИРОВАТЬ : Добавление вида к keyWindow
в соответствии с приведенными ниже правками привело к появлению нового набора проблем, tabBar
исчезает из вида, когда я раскручиваюсь.
class UnwindSegueFromRight: UIStoryboardSegue {
override func perform(){
let originalVC = self.source
let destinationVC = self.destination
UIApplication.shared.keyWindow?.insertSubview(destinationVC.view, aboveSubview: originalVC.view)
destinationVC.view.transform = CGAffineTransform(translationX: -originalVC.view.frame.size.width, y: 0)
UIView.animate(withDuration: 0.25,
delay: 0.0,
options: UIViewAnimationOptions.curveEaseInOut,
animations: {
destinationVC.view.transform = CGAffineTransform(translationX: 0, y: 0)
},
completion: { finished in
originalVC.dismiss(animated: false, completion: nil)
})
}
}//end class
Вот класс SegueFromRight
, который является начальным результатом
//Segue: From Right
class SegueFromRight: UIStoryboardSegue {
override func perform(){
let originalVC = self.source
let destinationVC = self.destination
UIApplication.shared.keyWindow?.insertSubview(destinationVC.view, aboveSubview: originalVC.view)
destinationVC.view.transform = CGAffineTransform(translationX: originalVC.view.frame.size.width, y: 0)
UIView.animate(withDuration: 0.25,
delay: 0.0,
options: UIViewAnimationOptions.curveEaseInOut,
animations: {
destinationVC.view.transform = CGAffineTransform(translationX: 0, y: 0)
},
completion: { finished in
originalVC.present(destinationVC, animated: false, completion: nil)
})
}
}//end class