将标签文本更改为用户输入到UITextField的内容

时间:2017-09-12 03:51:16

标签: ios swift

这是一个非常基本的问题,但我不确定问题是什么。我试图创造一个简单的'#hello world"用户在文本字段中输入他们想要的内容以及他们输入的内容进入标签的程序。然而,似乎没有任何事情发生,我不确定为什么因为我的推送功能完全符合我的预期。

import UIKit

class ViewController: UIViewController {
    @IBOutlet var PopUp: UITextField!
    @IBOutlet weak var HelloWorld: UILabel!

    @IBAction func Push(_ sender: UIButton) {
        PopUp.isHidden = false
        PopUp.text = "hello World"
    }

    @IBAction func send(_ sender: UITextField) {
        HelloWorld.text = sender.text
    }
}

2 个答案:

答案 0 :(得分:0)

根据您提供的代码,func send对我来说是未知的,无论它是否甚至是开火。可能会调用func send,也可能不会,_ sender: UITextField IBAction的{​​{1}}很奇怪。

你发射的与UITextField有关的事件是什么?您是否尝试在用户输入HelloWorld UILabel时更新UITextfield

要使用UILabel中输入的内容更新UITextField,您只需UIButton内部触摸IBAction。我认为您可以完全删除IBAction func send,除非您尝试在用户在UILabel中键入时更新UITextField。如果我对这一点的说法正确,请务必从故事板中删除IBAction Outlet

根据您提供的代码,Push func不会在UILabel中设置文字。我假设PushUIButton Touch Up Inside IBAction。您可以在HelloWorld UILabel中设置func Push文字,不需要使用活动的发件人,试试这个,您会看到填充的HelloWorld UILabel文字:

@IBAction func Push(_ sender: UIButton) {

    //PopUp.isHidden = false //why are you doing this? the UITextField PopUp should already be visible if you are typing text into it, so this code is superfluous as the value of PopUp.isHidden is already false
    HelloWorld.text = PopUp.text
    PopUp.text = "hello World"
}

如果您在UILabel中键入UITextField时显示文字,则应澄清您的问题。如果是这种情况,您需要将UIViewController设为UITextFieldDelegate

答案 1 :(得分:0)

以下是一种方法:

override func viewDidLoad() {
    super.viewDidLoad()
    PopUp.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged) // when textfield is edited this will call
}

func textFieldDidChange(_ textField: UITextField) {
    HelloWorld.text = textField.text
}