三个文本字段值的总和,无需单击按钮(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
。然后,将文本字段的delegate
s 设置为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 ios中的删除按钮时,如何将光标从一个文本字段自动移动到另一个文本字段?