View Controller и отображение другого View Controller - PullRequest
0 голосов
/ 13 марта 2019

Я хочу это. vc1 (выполнить переход к vc3) -> vc2 (в течение 2 секунд) - отменить -> vc3

Я имею в виду это. https://stackoverflow.com/a/39824680/11094223

VC1 CameraViewController

func showVC3() {

    performSegue(withIdentifier: "showPhoto_Segue", sender: nil)
}

@IBAction func cameraButton_TouchUpInside(_ sender: Any) {

    let settings = AVCapturePhotoSettings()
    photoOutput?.capturePhoto(with: settings, delegate: self)

}
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showLoading_Segue" {
        let loadVC = segue.destination as! showLoadingViewController

        loadVC.delegate = self


    }else if segue.identifier == "showPhoto_Segue" {
        let previewVC = segue.destination as! PreviewViewController
        previewVC.frameSet = frameSet
        previewVC.frameImage = frameImage
        previewVC.image = self.image
    }
}

extension CameraViewController: AVCapturePhotoCaptureDelegate {
func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {
    if let imageData = photo.fileDataRepresentation() {
        image = UIImage(data: imageData)

        performSegue(withIdentifier: "showLoading_Segue", sender: nil)

    }
}

}

vc2 showLoadingViewController

protocol VC2Delegate {
func showVC3()
}



var delegate: VC2Delegate?
override func viewDidLoad() {
    super.viewDidLoad()

    let time = DispatchTime.now() + .seconds(2)
    DispatchQueue.main.asyncAfter(deadline: time) {
        self.showPreview()
    }
}

func showPreview(){

    dismiss(animated: true, completion: nil)
    if let _ = delegate {
        delegate?.showVC3()
    }
}

vc3 PreviewViewController

Если вы сделаете это При переходе от vc2 к vc3, vc1 на некоторое время выходит, затем переходит к vc3. Я хочу перейти прямо с vc2 на vc3 (отклонить). не хорошо в английском. Прости

1 Ответ

0 голосов
/ 13 марта 2019

Проблема, с которой вы столкнулись, заключается в том, что вы оживляете увольнение vc2.Просто измените его на:

    dismiss(animated: false, completion: nil)
    if let _ = delegate {
        delegate?.showVC3()
    }

Анимация для showVC3 будет воспроизводиться так, как будто она показывается поверх vc2.vc2 тем временем исчезнет из стека.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...