Я не могу понять, как сбросить в компонент 0 массив, использованный в первом компоненте PickerView, при изменении компонента 0 (во избежание возможных ошибок из-за indexOutOfRange).
Это структура моих данных
let bananas = ["banana1", "banana2"]
let fruitArray = ["banana1" : ["cherry1","cherry2"], "banana2" : ["cherry1", "cherry2", "cherry3"]]
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 2
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if component == 0 {
return bananas.count
}
else {
let selectedBanana = pickerView.selectedRow(inComponent: 0)
return fruitArray[banana[selectedBanana]]!.count
}
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
let selectedBanana = pickerView.selectedRow(inComponent: 0)
let selectedCherry = pickerView.selectedRow(inComponent: 1)
bananaPicked = bananas[selectedBanana]
cherryPicked = fruitArray[bananaPicked]![selectedCherry]
pickerView.reloadAllComponents()
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
if component == 0 {
return bananas[row]
}
else {
let selectedBanana = pickerView.selectedRow(inComponent: 0)
return fruitArray[selectedBanana]![row]
}
}
Прямо сейчас, когда я (скажем) на banana2 и cherry3, но я переключаюсь на banana1, я получаю ошибку indexOutOfRange, потому что, конечно, в первом массиве бананов нет третьего элемента. Я желаю, чтобы банановый ряд менялся, чтобы сбросить до 0 вишневый ряд.
__________ ОБНОВЛЕНИЕ ______________
Это еще одна ошибка, из-за которой обнаружил сбой (indexOutOfRange), я выложил скриншот.