Swift 斯威夫特·皮克维
我一直在试图弄清楚为什么选择器视图向我的函数发送冲突的结果。当我更改一个选择器视图时,它将覆盖上一个选定选择器视图设置的值。pickerviews之间的共同点是,它们使用相同的数组填充。下面是控制PickerView的代码和表单的屏幕截图。如果首先选择了最高贷方,最后选择了最低贷方,则公式将使用最低贷方进行计算。但是,如果我先选择最底层的贷方,然后选择使用最高层贷方计算的最高层贷方,则会颠倒顺序。选择包含60的值时也会发生相同的错误。最后选定的值设置传递给公式的值。每个选定值都需要保留自己的选定值 我使用标签进行了更改,但仍然存在相同的问题。更新代码如下Swift 斯威夫特·皮克维,swift,uipickerview,Swift,Uipickerview,我一直在试图弄清楚为什么选择器视图向我的函数发送冲突的结果。当我更改一个选择器视图时,它将覆盖上一个选定选择器视图设置的值。pickerviews之间的共同点是,它们使用相同的数组填充。下面是控制PickerView的代码和表单的屏幕截图。如果首先选择了最高贷方,最后选择了最低贷方,则公式将使用最低贷方进行计算。但是,如果我先选择最底层的贷方,然后选择使用最高层贷方计算的最高层贷方,则会颠倒顺序。选择包含60的值时也会发生相同的错误。最后选定的值设置传递给公式的值。每个选定值都需要保留自己的选定
// Load FI Information
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if pickerView.tag == 1
{
return newLender[row]
}
else if pickerView.tag == 11
{
return newLender[row]
}
else if pickerView.tag == 10
{
return paymentFrequency[row]
}
else if pickerView.tag == 15
{
return paymentFrequency[row]
}
else if pickerView.tag == 6
{
return mortgageTerm[row]
}
else if pickerView.tag == 17
{
return mortgageTerm[row]
}
return ""
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if pickerView.tag == 1
{
return lenders.count
}
else if pickerView.tag == 11
{
return newLender.count
}
else if pickerView.tag == 10
{
return paymentFrequency.count
}
else if pickerView.tag == 15
{
return paymentFrequency.count
}
else if pickerView.tag == 6
{
return mortgageTerm.count
}
else if pickerView.tag == 17
{
return mortgageTerm.count
}
return 1
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if pickerView.tag == 1
{
orginalLender.text = lenders[row]
}
else if pickerView.tag == 11
{
newMortgageLender.text = newLender[row]
}
else if pickerView.tag == 10
{
currentPaymentFrequency.text = paymentFrequency[row]
}
else if pickerView.tag == 15
{
newPaymentFrequency.text = paymentFrequency[row]
}
else if pickerView.tag == 6
{
currentMortgageTerm.text = mortgageTerm[row]
}
else if pickerView.tag == 17
{
newMortgageTerm.text = mortgageTerm[row]
}
if let selectedLender = currentLender.filter({ $0.fiName == lenders[row] }).first {
Global.selectedRate = selectedLender
}
self.view.endEditing(false)
}
您应该使用标记来指示特定的pickerView。检查这个答案&它会把事情弄清楚的
希望有帮助。每次选择一行时都可能重复执行if let selectLender代码。这是否执行正确的逻辑?currentLender设置在哪里?我切换到使用标签,同样的问题也发生了。
// Load FI Information
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if pickerView.tag == 1
{
return newLender[row]
}
else if pickerView.tag == 11
{
return newLender[row]
}
else if pickerView.tag == 10
{
return paymentFrequency[row]
}
else if pickerView.tag == 15
{
return paymentFrequency[row]
}
else if pickerView.tag == 6
{
return mortgageTerm[row]
}
else if pickerView.tag == 17
{
return mortgageTerm[row]
}
return ""
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if pickerView.tag == 1
{
return lenders.count
}
else if pickerView.tag == 11
{
return newLender.count
}
else if pickerView.tag == 10
{
return paymentFrequency.count
}
else if pickerView.tag == 15
{
return paymentFrequency.count
}
else if pickerView.tag == 6
{
return mortgageTerm.count
}
else if pickerView.tag == 17
{
return mortgageTerm.count
}
return 1
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if pickerView.tag == 1
{
orginalLender.text = lenders[row]
}
else if pickerView.tag == 11
{
newMortgageLender.text = newLender[row]
}
else if pickerView.tag == 10
{
currentPaymentFrequency.text = paymentFrequency[row]
}
else if pickerView.tag == 15
{
newPaymentFrequency.text = paymentFrequency[row]
}
else if pickerView.tag == 6
{
currentMortgageTerm.text = mortgageTerm[row]
}
else if pickerView.tag == 17
{
newMortgageTerm.text = mortgageTerm[row]
}
if let selectedLender = currentLender.filter({ $0.fiName == lenders[row] }).first {
Global.selectedRate = selectedLender
}
self.view.endEditing(false)
}