У меня есть раздел видео вступления для приложения. В раскадровке есть переход "toMainMenu", который связан с другим контроллером представления раскадровки.
В IntroVideoVC есть два класса: -
class IntroVideoVC: UIViewController {
var videoView: IntroVideoView!
override func viewDidLoad() {
videoView = IntroVideoView(controller: self)
self.view.addSubview(videoView)
let tap = UITapGestureRecognizer(target: self, action: #selector(tappedVideo))
view.addGestureRecognizer(tap)
}
@objc func tappedVideo() {
videoFinished();
}
func videoFinished() {
self.performSegue(withIdentifier: "toMainMenu", sender: self)
}
}
class IntroVideoView: UIView {
init(controller: UIViewController) {
super.init(frame: CGRect(x: 0, y: 0, w: 0, h: 0))
self.controller = controller
...
}
func handleVideo(videoPlayer: AVPlayer) {
...
IntroVideoVC().videoFinished()
}
}
Если я нажму на видео, оно правильно выполнит переход, однако, если я позволю завершить видео, которое, в свою очередь, вызывает метод IntroVideoViews -> handleVideo (), я получаю сообщение о сбое, заявив, что оно не имеет перехода с идентификатором "toMainMenu".
Думаю, я понимаю, почему, но не знаю, как обойти эту проблему, будучи новичком в Свифте. Я полагаю, что это потому, что handleVideo () использует IntroVideoVC в качестве одиночного и поэтому теряет ссылку на контроллер IntroVideoVC! Возможно, я (читай: скорее всего) ошибаюсь, но это то, что я чувствую, может быть причиной этой проблемы.
Просто ищу толчок в правильном направлении
спасибо заранее