подготовиться (к переходу :) не вызывать - PullRequest
0 голосов
/ 21 сентября 2018

Я просмотрел соответствующие сообщения, и я не понимаю, почему это не вызывается в моем ViewController.

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    print("prepare in Start got triggered")

    if segue.destination is RegistrationViewController {

        let newVC = sender as? RegistrationViewController
        newVC?.testString = "Mission accomplished, passed this data"
    }

}

Я звоню с помощью нажатия кнопки

performSegue(withIdentifier: "RegistrationFromStart", sender: self)

testString - это свойство в RegistrationViewController, которое происходит, без проблем, но свойство никогда не изменяется, и подготовка никогда не запускает команду печати. ​​

Я печатаю testString в viewDidLoad RegistrationViewController

  print("RegistrationViewController testString \(testString)")

Заранее спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 22 сентября 2018

Спасибо всем.Спасибо за указание на это.

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    print("prepare in Start got triggered")

    if segue.destination is RegistrationViewController {

        let newVC = segue.destination as? RegistrationViewController
        newVC?.testString = "Mission accomplished, passed this data"
    }

}

Тем не менее, он никогда не запускает оператор печати, но он передает данные, которые были целым пунктом.И на ваш счет, да, я звоню с IBAction

 @IBAction func startKiosk(_ sender: Any) {
    clickSound?.play()
    performSegue(withIdentifier: "RegistrationFromStart", sender: self)
 }
0 голосов
/ 21 сентября 2018

Просто это

let newVC = sender as? RegistrationViewController
newVC?.testString = "Mission accomplished, passed this data"

недопустимо

, поскольку sender нельзя преобразовать в RegistrationViewController

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

  if let des = segue.destination as? RegistrationViewController {
      des.testString = "Mission accomplished, passed this data"
  }

}

Ваш источник соединения долженбыть самим VC не от какого-либо действия, а внутри IBAction например установить

performSegue(withIdentifier: "RegistrationFromStart", sender:nil)
...