json - 选择器 View : I want data in picker view 2 change with picker view 1 when select data from picker view 1

标签 json swift xcode

我对选择器 View 有一些疑问我有两个选择器 View 选择器 View 1 = getpPlandateDCPlanData 选择器 View 2 = getpShipmentDCPlanData

当从选择器 View 1 中选择数据时,我希望选择器 View 2 中的数据随选择器 View 1 一起更改

var getpPlandateDCPlanData = ["20190118","20190119"]
var getpShipmentDCPlanData = ["4505023244","4505023274"]
//  Picker view function
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        if pickerView == pickerview1 {
            return self.getpPlandateDCPlanData.count
        }
        else if pickerView == pickerview2{
            return self.getpShipmentDCPlanData.count
        }
        return 1

    }

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        if pickerView == pickerview1{
            return getpPlandateDCPlanData[row]
            //return self.convertToString(dateString: getpPlandateDCPlanData[row], formatIn: "yyyyMMdd", formatOut: "MMM dd, yyyy")
        }
        else if pickerView == pickerview2{
            return getpShipmentDCPlanData[row]
        }
        return nil;

    }

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        //if getpPlandateDCPlanData.count > 0 && getpPlandateDCPlanData.count >= row && getpShipmentDCPlanData.count >= row {
        if getpPlandateDCPlanData.count >= row && getpShipmentDCPlanData.count >= row {
            if pickerView == pickerview1 {
                getpPlanDatePickerView.text = getpPlandateDCPlanData[row]
                print("PlanDatePickerView ==> \(getpPlandateDCPlanData)")
            }
            else if pickerView == pickerview2 {
                getpShipmentPickerView.text = getpShipmentDCPlanData[row]
                print("ShipmentPickerView ==> \(getpShipmentDCPlanData)")
            }//if
        }//if
    }

最佳答案

您在现有代码中几乎已经完成了 - 只需使用 didSelectRow 方法来检测 pickerView1 中的更改,然后在 pickerView2 中设置行>。我在下面添加了一个简单的示例,只是将 pickerView 2 中的行交换到 pickerView1 的相反行。

 func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
      if pickerView === pickerView1 {
         switch row {
         case 0: pickerView2.selectRow(1, inComponent: 0, animated: true)
         case 1: pickerView2.selectRow(0, inComponent: 0, animated: true)
         default: break
         }
      }
   }

关于json - 选择器 View : I want data in picker view 2 change with picker view 1 when select data from picker view 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58911492/

相关文章:

ios - 快速获取特定日期和时间的 UTC 时间?

ajax - JQuery - 迭代 JSON 响应

Javascript JSON 数组排序

ios - 在 WatchOS 端创建自定义 Long-Nook 通知

ios - UITableViewController 不使用 xib 文件加载自定义单元格

ios - 关于@2x @3x Xcode 图像的困惑

php - 值未通过 ajax 将 session 数组更新为 json 数组

javascript - (Angularjs) 如何 $http.get 数据并将其存储在服务中

ios - 找不到有效的 GoogleService-info.plist

ios - 理解 tableView 等函数中的 Swift 参数表示法