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

Posted

技术标签:

【中文标题】三个文本字段值的总和,无需单击按钮(Swift - Xcode)【英文标题】:Sum of three textfield value without clicking a button (Swift - Xcode) 【发布时间】:2018-01-05 06:34:20 【问题描述】:

我的标签目前无法自动读取添加的 3 个文本字段值,而无需按钮功能操作。因此,我只希望我的文本字段只是一个 Int 输入。下面附上一个屏幕截图,以供更好的参考。感谢那些可以帮助我的人。谢谢!

视图控制器

import UIKit

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

【问题讨论】:

【参考方案1】:

一种方法是将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。然后,将文本字段的delegates 设置为self

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

【讨论】:

response.text ?? "0" 有帮助吗?如果实现 shouldChange 委托以将字符集限制为数字,也可能会有所帮助。 你可以用这个答案做到这一点 - ***.com/questions/12944789/… @Skywalker 谢谢,添加了指向该答案的链接。 感谢它的工作!但最后一件事,我如何验证我的“影响”文本字段?这样用户只能输入 1 - 80? @Kinja 您将不得不使用 if 语句来检查输入是否在范围内。如果其中任何一个超出范围,则使用标签输出适当的消息。

以上是关于三个文本字段值的总和,无需单击按钮(Swift - Xcode)的主要内容,如果未能解决你的问题,请参考以下文章

Swift,iOS - 单击以显示文本字段时按钮向上移动?然后搬回去?

Swift:单击推送通知操作按钮时在文本字段中写入并处理它

当用户以编程方式单击swift ios中的删除按钮时,如何将光标从一个文本字段自动移动到另一个文本字段?

仅当所有文本字段都已填写时才在 Swift 中启用按钮

在 Python 中无需单击即可执行函数 | Pyside [重复]

当文本字段为空时禁用警报按钮 Swift 3