【发布时间】:2022-06-11 20:00:47
【问题描述】:
我有 5 个文本字段:
当我在任意 4 个文本字段中键入值时,应计算该值并显示在第 5 个文本字段中。
例如,如果我在“利息”、“每月付款”、“终值”和“付款次数”文本字段中输入值,则应计算出一个值,该值应显示在“本金金额”文本字段中。 计算发生在键盘关闭时 (textFieldDidEndEditing)。
下面是代码:
// When the user has finished typing
func textFieldDidEndEditing(_ textField: UITextField) {
// Principal Amount
let P = Double(principalAmountTextField.text!)
// Interest rate
let r = Double(interestTextField.text!)
// Monthly Payment
let PMT = Double(monthlyPaymentTextField.text!)
// Number of Payments
let t = Double(numOfPaymentsTextField.text!)
// Future Value
let A = Double(futureValueTextField.text!)
// Check if the necessary text fields are filled to find Principal Amount
if futureValueTextField.text != "" && interestTextField.text != "" && numOfPaymentsTextField.text != "" && monthlyPaymentTextField.text != "" {
print(1)
principalAmountTextField.text = String(calculatePrincipalAmountCompound(futureValue: A!, interestRate: r! / 100, payment: PMT!, numOfPayments: t!))
}
// Check if the necessary text fields are filled to find Monthly Payment
if futureValueTextField.text != "" && principalAmountTextField.text != "" && numOfPaymentsTextField.text != "" && interestTextField.text != "" {
print(2)
monthlyPaymentTextField.text = String(calculateMonthlyPaymentCompound(principalAmount: P!, futureValue: A!, numOfPayments: PMT!, interestRate: r! / 100))
}
}
很明显,如果我在利息、每月付款、未来价值和付款次数文本字段中输入值,则只有 textFieldDidEndEditing 方法中的第一个 IF 条件应该运行,但由于某种原因,第二个 IF 条件也会运行。为什么会这样?
编辑
感谢@tomerpacific,我能够完成这项工作。但是我还是不知道为什么上面的代码不起作用,我只是尝试在不调用方法的情况下运行 IF 条件,它可以正常工作:
// Check if the necessary text fields are filled to find Principal Amount
if futureValueTextField.text != "" && interestTextField.text != "" && numOfPaymentsTextField.text != "" {
print(11)
}
// Check if the necessary text fields are filled to find Monthly Payment
if futureValueTextField.text != "" && principalAmountTextField.text != "" && numOfPaymentsTextField.text != "" && interestTextField.text != "" {
print(22)
}
【问题讨论】:
-
您是否调试过代码以查看文本字段的值?另外,如果这两种情况不同,您可以从其中任何一种情况中返回/否则如果您的情况。
-
@tomerpacific 哦,谢谢,那行得通。但是知道为什么上面的代码不起作用吗?
-
一个猜测 - 调用 .text 时返回的值可能不是空字符串。
-
@tomerpacific Hmm lemme 只是尝试运行 IF 条件而不运行方法
-
@tomerpacific 我已经编辑了问题,请查看。奇怪的是它在这里只运行第一个 IF 条件,但是当我调用这些方法时,它同时运行了两个 IF 条件。
标签: swift uitextfield