如何将文本字段中的数据推送到另一个 VC 中的标签

Posted

技术标签:

【中文标题】如何将文本字段中的数据推送到另一个 VC 中的标签【英文标题】:How to push data from textField to label in another 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 的出口 【参考方案1】:

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

【讨论】:

以上是关于如何将文本字段中的数据推送到另一个 VC 中的标签的主要内容,如果未能解决你的问题,请参考以下文章

ViewController 将 Swift 从一个 VC 推送到另一个 VC 并返回

如何将数据推送到nodejs mongodb中的另一个模式

如何从 Cake 构建任务将标签推送到 Bamboo 中的 Bitbucket Git 存储库?

如何使用动画概念将一个 UIview 推送到 ios 中的另一个 UIview?

如何将新的 viewController 推送到另一个视图控制器中的现有视图中?

Rails simple_form 没有将数据字段推送到数据库