【问题标题】:Picker view : I want data in picker view 2 change with picker view 1 when select data from picker view 1选择器视图:当从选择器视图 1 中选择数据时,我希望选择器视图 2 中的数据随选择器视图 1 更改
【发布时间】:2019-11-18 09:30:46
【问题描述】:

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

当从选择器视图 1 中选择数据时,我希望选择器视图 2 中的数据随着选择器视图 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
    }

【问题讨论】:

  • 好的,但是怎么做?由于我在您的代码中没有看到任何解决此问题的尝试,因此很难理解您想要替换的方式和内容。

标签: json swift xcode


【解决方案1】:

您在现有代码中几乎就在那里 - 只需使用 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
         }
      }
   }

【讨论】:

  • OP 希望改变数据而不是选择。使用您的解决方案,是否还需要第二个选择器视图?
  • 在我的示例中,不需要第二个,但我以不同的方式阅读了这个问题,并在给定的上下文中回答了它。你的解释会更有意义?
  • 是的,需要澄清
  • @flanker 我复制了你的代码并在我的应用程序代码中测试不工作,我不确定
  • @Nardanong.s 根据 cmets,您需要澄清您要做什么。上面的代码是该技术的一个示例 - 如果这是您想要实现的,那么您需要将该技术应用到您的应用程序中,而不仅仅是复制和粘贴。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-11
  • 2018-11-02
  • 2012-10-01
  • 1970-01-01
相关资源
最近更新 更多