2017-10-18 54 views
1

我在我的应用程序中使用2 Pickerview。但是他们的信息会在使用时混合使用例如:如果我在第一个选择器中选择2.row,那么系统会将第二个选择器行更改为2,反向操作相同。2错误信息PickerView

我的代码是在这里:

override func viewDidLoad() { 
    super.viewDidLoad() 

    petArray = ["A","B","C","D"] 

    feedTimeArray = ["1","2","3","4"] 

}  

func numberOfComponents(in pickerView: UIPickerView) -> Int { 
    return 1 
} 

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    if pickerView.tag == 1{ 
     return petArray.count 
    } 
    if pickerView.tag == 2 { 
     return feedTimeArray.count 
    } 
    return 0 
} 

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
    if pickerView.tag == 1 { 
     return petArray[row] 
    } 
    if pickerView.tag == 2{ 
     return feedTimeArray[row] 
    } 
    return "" 
} 

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    selectedFeed = feedTimeArray[row] 
    print(feedTimeArray[row]) 

    if selectedFeed == feedTimeArray[1] { 
     //case 1 
    } 

    if selectedFeed == feedTimeArray[2] { 
     //case 2 
    } 
    if selectedFeed == feedTimeArray[3] { 
     //case 3 
    } 

    selectedPet = petArray[row] 
    print(petArray[row]) } 

实施例:

我选择的B 系统改变第二选择器2

我选择4 系统改变的第一选择器来d

+0

您还可以在didselectRow中添加检查pickerview标签的条件。 – Sneha

+1

@Sneha你和Zee的nswer解决了这个问题,谢谢! – Egrimo

回答

1

我认为你的didSelectRow方法会像这样

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 

if pickerView.tag == 1 
{ 
    selectedFeed = feedTimeArray[row] 
    print(feedTimeArray[row]) 

    if selectedFeed == feedTimeArray[1] { 
    //case 1 
    } 

     if selectedFeed == feedTimeArray[2] { 
     //case 2 
    } 
    if selectedFeed == feedTimeArray[3] { 
    //case 3 
    } 
} 
else if pickerView.tag == 2 
{ 
    selectedPet = petArray[row] 
    print(petArray[row]) 
} 
else 
    { } 
}