【问题标题】:How to push data from textField to label in another VC如何将文本字段中的数据推送到另一个 VC 中的标签
【发布时间】:2020-09-27 11:50:31
【问题描述】:

我有带有 4 个标签和 4 个 goToVC 按钮的 mainVC,每个按钮使用 segue 来呈现另外 4 个 VC。每个 vc 都有 textField 和 doneButton。我想在 mainVC 标签中显示 textField 中的文本,并且我想使用委托。但相反,我得到了空标签。请帮忙。

委托.swift

protocol TextFieldDelegate {
    func didFinishTextField(text: String)
} 

MainVC.swift

class MainViewController: UIViewController, TextFieldDelegate {
    
    @IBOutlet weak var redText: UILabel!
    @IBOutlet weak var orangeText: UILabel!
    @IBOutlet weak var pinkText: UILabel!
    @IBOutlet weak var purpleText: UILabel!
    
    var choosenLabel: UILabel?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        }
    
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "toRedVC" {
            let vc = segue.destination as! RedViewController
            vc.delegate = self
            choosenLabel = redText
        } else if segue.identifier == "toOrangeVC" {
            let vc = segue.destination as! OrangeViewController
            vc.delegate = self
            choosenLabel = orangeText
        } else if segue.identifier == "toPinkVC" {
            let vc = segue.destination as! PinkViewController
            vc.delegate = self
            choosenLabel = pinkText
        } else if segue.identifier == "toPurpleVC" {
            let vc = segue.destination as! PurpleViewController
            vc.delegate = self
            choosenLabel = purpleText
        }
    }
    
    func didFinishTextField(text: String) {
        if let data = choosenLabel {
            data.text = text
        }
    }
   
    @IBAction func redButton(_ sender: UIButton) {
    }
    @IBAction func orangeButton(_ sender: UIButton) {
    }
    @IBAction func pinkButton(_ sender: UIButton) {
    }
    @IBAction func purpleButton(_ sender: UIButton) {
    }
}

RedVC(其他3个相同).swift

class RedViewController: UIViewController {

    
    var delegate: TextFieldDelegate?
    var textVar: String = ""
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }
    
    @IBAction func textField(_ sender: UITextField) {
        if let data = sender.text {
            textVar = data
        }
    }
    @IBAction func doneButton(_ sender: UIButton) {
        delegate?.didFinishTextField(text: textVar)
        dismiss(animated: true, completion: nil)
    }
}

【问题讨论】:

  • 看起来您正在向 mainVC 发送空字符串。使用 delegate?.didFinishTextField(text: textfield.text).make 你在 redVC 中创建 textfield 的出口

标签: ios swift delegates uitextfield uilabel


【解决方案1】:

您的代码似乎一切正常。我建议您检查您的文本字段的操作是否在 ViewController 中设置为 editingChanged

【讨论】:

    猜你喜欢
    • 2020-06-11
    • 1970-01-01
    • 2020-08-19
    • 2020-07-29
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    相关资源
    最近更新 更多