【发布时间】:2017-08-03 07:09:53
【问题描述】:
我一直在试图弄清楚为什么选择器视图会向我的函数发送相互冲突的结果。当我更改一个选择器视图时,它会覆盖前一个选择器视图设置的值。 pickerviews 之间的共同点是它们被填充了它们被填充了相同的数组。下面是控制选择器视图的代码和表单的屏幕截图。当首先选择顶部贷方并且最后选择底部贷方时,公式使用底部贷方进行计算。但是,如果我通过首先选择底部贷方然后使用顶级贷方计算的顶级贷方来反转顺序。选择其中包含 60 的值时会发生相同的错误。选择的最后一个值设置传递给公式的值。每个选择的值都需要保持自己的选择值
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if pickerView == currentLenderPicker
{
return newLender[row]
}
else if pickerView == newLenderPicker
{
return newLender[row]
}
else if pickerView == currentPaymentFrequencyPicker
{
return paymentFrequency[row]
}
else if pickerView == newPaymentFrequencyPicker
{
return paymentFrequency[row]
}
else if pickerView == mortgageTermPicker
{
return mortgageTerm[row]
}
else if pickerView == newMortgageTermPicker
{
return mortgageTerm[row]
}
return ""
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if pickerView == currentLenderPicker
{
return lenders.count
}
else if pickerView == newLenderPicker
{
return newLender.count
}
else if pickerView == currentPaymentFrequencyPicker
{
return paymentFrequency.count
}
else if pickerView == newPaymentFrequencyPicker
{
return paymentFrequency.count
}
else if pickerView == mortgageTermPicker
{
return mortgageTerm.count
}
else if pickerView == newMortgageTermPicker
{
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 == currentLenderPicker
{
orginalLender.text = lenders[row]
}
else if pickerView == newLenderPicker
{
newMortgageLender.text = newLender[row]
}
else if pickerView == currentPaymentFrequencyPicker
{
currentPaymentFrequency.text = paymentFrequency[row]
}
else if pickerView == newPaymentFrequencyPicker
{
newPaymentFrequency.text = paymentFrequency[row]
}
else if pickerView == mortgageTermPicker
{
currentMortgageTerm.text = mortgageTerm[row]
}
else if pickerView == newMortgageTermPicker
{
newMortgageTerm.text = mortgageTerm[row]
}
if let selectedLender = currentLender.filter({ $0.fiName == lenders[row] }).first {
Global.selectedRate = selectedLender
}
self.view.endEditing(false)
}
我使用标签进行了更改,但我仍然遇到同样的问题。下面更新了代码。
// 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)
}
【问题讨论】:
-
每次选择一行时,都会执行 if let selectLender 代码。这是执行正确的逻辑吗? currentLender 在哪里设置?
标签: swift uipickerview