Попытка передать данные от одного viewcontroller к другому, используя segues - PullRequest
0 голосов
/ 16 июня 2019

У меня есть две настройки viewcontroller и я также устанавливаю segue соединения.Я пытаюсь передать данные от одного из VC к другому.Использование приведенного ниже кода и использование переопределения func работает.То, что я хочу сделать, это только включить функцию подготовки переопределения, когда кнопка нажата, и когда я вставляю код функции переопределения в действие кнопки, это не работает - метка на первом VC не обновляется - она ​​остается по умолчаниюзначение, которое я установил.

Первый код ViewController:

    var testLabel1:String = "default"

    @IBOutlet weak var testLabel: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
        testLabel?.text = testLabel1
        // Do any additional setup after loading the view.
    }

Второй код ViewController:

override func prepare(for segue: UIStoryboardSegue, sender: Any?)
    {
        if segue.destination is ViewController
        {
            let vc = segue.destination as? ViewController
            vc?.testLabel1 = "Success"
        }
    }

Действие кнопки, которое я пытался

    @IBAction func actionBtn(_ sender: Any) {
        func prepare(for segue: UIStoryboardSegue, sender: Any?)
        {
            if segue.destination is ViewController
            {
                let vc = segue.destination as? ViewController
                vc?.testLabel1 = "Success"
            }
        }
    }

1 Ответ

1 голос
/ 16 июня 2019

Вам нужно вызвать его с помощью performSegue

class FirstVc:UIViewController {

    @IBOutlet weak var lbl:UILabel!

    @IBAction func goToSecond(_ sender: Any) {
        self.performSegue(withIdentifier:"YourSegueName",sender:nil)
    }

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "YourSegueName" {
            let vc = segue.destination as! SecondVC
            vc.testLabel1 = "Success"
        }
    }

    func setData(_ str:String){
        self.lbl.text = str

    }

}

class SecondVC:UIViewController {

    var testLabel1 = ""
    weak var delegate:FirstVc?

    func goBack() {
        self.delegate?.setData("FromSecond")
        self.dismiss(animated: true, completion: nil)
    }


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