access textfield text from another viewController

Vic*_*tro 1 textfield viewcontroller ios swift

我尝试profileView从第一个视图访问视图中的文本字段内容,viewController但是它不起作用。我读到我必须使用,override func prepare(for segue: UIStoryboardSegue, sender: Any?) {}所以我使用了它,但是它仍然无法正常工作,我也不知道为什么。

这是我的viewController代码:

// This code is the code generated by xCode, only the loginField was added.

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var loginField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}
Run Code Online (Sandbox Code Playgroud)

这是我的profileController准备功能:

    var login: String!
    @IBOutlet weak var myLabel: UILabel!

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        print("prepare")
        if (segue.identifier == "mainMenu")
        {
            let svc = segue.source as! ViewController
            login = svc.loginField.text
            self.myLabel.text = login
            print(login)
        }
    }
Run Code Online (Sandbox Code Playgroud)

实际上,我真正读到的东西是“ prepareForSegue”函子,但是当我尝试覆盖它时,xCode不会编译代码...

谢谢你的帮助。

elk*_*ner 5

在您的viewController中编写您的prepareforSegue方法

为什么?

因为您想将ViewController文本字段数据发送到profileViewController。那就是在Source中编写prepareForSegue 。这里,

Source = ViewController

Destination = ProfileView
Run Code Online (Sandbox Code Playgroud)

注意:

  1. 在destinationViewController(ProfileView Controller)中使用一个变量,并将textField数据保留在此变量中。

在prepareForSegue中是这样的。

 destinationVC.someVariable = self.SourceViewLabel.text // your sourceViewController
Run Code Online (Sandbox Code Playgroud)

并在destinationViewController(ProfileView)的viewDidLoad中编写此代码。

self.profileLabel.text = somVariable
Run Code Online (Sandbox Code Playgroud)

在我的第一观点中,我写了这个。

@IBAction func nexVCAction(_ sender: Any) {

    self.performSegue(withIdentifier: "secondvc", sender: self)

}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier  == "secondvc" {
        let vc = segue.destination as! secondVC
        vc.stringHolder = textField.text!
    }

}
Run Code Online (Sandbox Code Playgroud)

这是第二个视图代码。

import UIKit

class secondVC: UIViewController {

    @IBOutlet weak var textlabel: UILabel!
    var stringHolder:String = ""
    override func viewDidLoad() {
        super.viewDidLoad()

        textlabel.text = stringHolder

        // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}
Run Code Online (Sandbox Code Playgroud)

我为此做了git项目

仅检查FirstVC.swiftsecondVC.swift

这就是输出。

在此处输入图片说明