是否有办法让标签中的文字自动更新显示

时间:2016-05-10 09:57:58

标签: ios swift

我正在尝试创建一个应用程序,让用户输入4个数字并显示该数字的蜂窝网络。有没有办法在用户输入数字后自动显示标签中的数字而不点击按钮?我实际上有一个代码,允许用户输入数字,但用户必须单击输入按钮才能在标签上显示结果。有没有办法让它自动显示结果?顺便说一下,我真的很新,所以我道歉。这是代码:

import UIKit
import Firebase

class ViewController: UIViewController, FBSDKLoginButtonDelegate {

@IBOutlet weak var numField: UITextField!
@IBOutlet weak var answerField: UILabel!

@IBAction func enterButton(sender: AnyObject) {
    matchNumber()
}

func matchNumber(){

    let number: String = numField.text!
    let numRef = Firebase(url: "https://npi2.firebaseio.com/num_details")
    numRef.queryOrderedByKey().observeEventType(.ChildAdded, withBlock: { snapshot in
        let network = snapshot.value as! String!
            if snapshot.key ==  self.numField.text! {
                self.answerField.text = network

            }
            else {
                self.answerField.text = "Missing"

            }

    })

    }

3 个答案:

答案 0 :(得分:3)

将目标添加到numField,类似这样......

override func viewDidLoad() {
    super.viewDidLoad()
    self.numField.addTarget(self, action: "editingChanged:", forControlEvents: .EditingChanged)
}

每次editingChanged中的字符发生变化时,都会触发numField方法。

func editingChanged(textField:UITextField) {
    if let text = textField.text {
        if text.characters.count == 4 {
            matchNumber()
        }
    }
}

最后,我们检查输入中是否有字符串,如果它在运行matchNumber方法之前是4个字符。

答案 1 :(得分:0)

您可以使用didSet方法。

    var numberstring = String() {
    didSet {
        yourlabel.text = numberstring
    }
}

答案 2 :(得分:0)

如果您使用textfield来接受输入,那么您可以使用textfieldDidEndEditing委托方法。