三个文本字段值的总和,无需单击按钮(Swift - Xcode)

时间:2018-01-05 06:34:20

标签: ios swift

我目前在标签上遇到问题,无法自动读取3个文本字段值,而没有按钮功能操作。因此我只希望我的textfield只是一个Int输入。下面附有截图,以便更好地参考。感谢那些可以帮助我的人。谢谢!

的ViewController

import UIKit

class TryingoutController: UIViewController {
    @IBOutlet var impact: UITextField!
    @IBOutlet var rigour: UITextField!
    @IBOutlet var response: UITextField!
    @IBOutlet var total: UILabel!

enter image description here

1 个答案:

答案 0 :(得分:4)

一种方法是将self作为目标添加到文本字段中,用于控制事件.editingChanged

impact.addTarget(self, action: #selector(textChanged), for: .editingChanged)
// do the same for other textfields 

然后声明textChanged方法。这应该处理文本字段中的文本发生变化时会发生什么。一种实现方式是在文本字段中添加所有值(如果有的话,并且有效)并将其显示在标签中。

func textChanged() {
    let impactValue = Int(impact.text!)
    let rigourValue = Int(rigour.text!)
    let responseValue = Int(response.text!)
    total.text = String(describing: 
        (impactValue ?? 0) + (rigourValue ?? 0) + (responseValue ?? 0)
    )
}

您可以选择符合UITextFieldDelegate

class TryingoutController: UIViewController, UITextFieldDelegate {

}

并根据Thuggish Nuggets的this answer实施shouldChange。然后,将文本字段的delegate设置为self

impact.delegate = self
// do the same for other text fields.