Как я могу разделить случаи в viewWillAppea по Segue? - PullRequest
0 голосов
/ 02 марта 2019

Цель

Я делаю приложение, чтобы увидеть 3D-модель с помощью комплекта Scene.
Swift 4.0
Xcode 10.1

Я хочу передать изображение.Я создаю изображение в SCNViewController (используя SCN View) и после этого перехожу в ViewController.Я хочу разделить случаи, когда я передаю изображение.Я думаю, что лучше использовать Segue.

enter image description here Детализация Segue enter image description here

Массив
Я использую массив в AppDelegate.Потому что я хочу добавить и добавить изображение в ViewController.Я не удаляю изображение при перемещении на другой ViewController.

Проблемы

Когда я пишу как показано ниже, оно сломается. Я использую функцию viewWillAppear.

ViewController

override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        if appDelegate.isNewSCNStampAdded == true{
             let scnstamp = appDelegate.scnstampArray.last!

             func returnToTop(segue: UIStoryboardSegue) {
                 if segue.identifier == "backtoFirstcoma" {
                 mainImageView.image = scnstamp
                 mainImageView.contentMode = UIView.ContentMode.scaleAspectFit
                 print("1")
             }else if segue.identifier == "backtoSecondcoma" {
                 print("2")
             }else if segue.identifier == "backtoThirdcoma" {
                 print("3")
             }else {
                 print("others")
             }
        }
        appDelegate.isNewSCNStampAdded = false
    }
}

(2-я идея)
Я попробовал другой способ.Я сделал "разделение", чтобы отличить.Но этот способ тоже не работает.Я не могу поймать информацию о «дележках» во времени viewWillAppear.

ViewController

override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        if appDelegate.isNewSCNStampAdded == true{
             let scnstamp = appDelegate.scnstampArray.last!

             switch dividegoes {
             case "goone" :
                 mainImageView.image = scnstamp
                 print("1")
             case "gotwo" :
                 secondImageView.image = scnstamp
                 print("2")
             case "gothree" :
                 thirdImageView.image = scnstamp
                 print("3")
             default:
                 print("Others")
             }
        }
        appDelegate.isNewSCNStampAdded = false
    }
}

SCNViewController

let dividegoes = "gozero"

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    switch segue.identifier {
    case "backtoFirstcoma" :
        let whiteVc = segue.destination as! ViewController
        whiteVc.dividegoes = "goone"
        print("go1")
    case "backtoSecondcoma" :
        let blueVc = segue.destination as! ViewController
        blueVc.dividegoes = "gotwo"
        print("go2")
    case "backtoThirdcoma" :
        let greenVc = segue.destination as! ViewController
        greenVc.dividegoes = "gothree"
        print("go3")
    default:
        print(“Others")
    }
}

Как я могу разделить случаи в этомcase.
Если я удалю структуру if-else, она будет работать успешно.Но мне нужно разделить на 3 способа.

Сообщение об ошибке
, вид которого отсутствует в иерархии окон!

Моя идея

Я не смог использовать Segue в viewWillAppear...?Может быть, мне нужно использовать другой способ делить дела ...

1 Ответ

0 голосов
/ 02 марта 2019
override func prepare(for segue: UIStoryboardSegue, sender: Any?)

Вам следует рассмотреть возможность использования этой функции, а не viewWillAppear mate.

...