Как сбросить URickerview selectRow в нулевую строку по умолчанию - PullRequest
0 голосов
/ 19 октября 2019

У меня есть приложение с UIPickerview с 2 компонентами, которое берет данные из 2 массивов. Я установил второй компонент в строке 3, когда выбрана строка 1 в компоненте 0. Это было нормально, но моя проблема в том, что когда row в компоненте 0 изменяется, я хочу, чтобы компонент 1 был сброшен в строку 0 (по умолчанию).

@IBOutlet weak var myPicker: UIPickerView!

let firstArray = ["a", "b", "c", "d"]
let secondArray = ["A", "B", "C", "D"]

override func viewDidLoad() {
    super.viewDidLoad()
    myPicker.delegate = self
    myPicker.dataSource = self
}

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

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    switch component {
    case 0: return firstArray.count
    case 1: return secondArray.count
    default: break
    }
    return 0
}

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    switch component {
    case 0: return firstArray[row]
    case 1: return secondArray[row]
    default: break
    }
    return ""
}

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

    if myPicker.selectedRow(inComponent: 0) == 1 {
        myPicker.selectRow(3, inComponent: 1, animated: true)
    }
}

1 Ответ

0 голосов
/ 19 октября 2019

Просто используйте else if, чтобы выбрать сначала row в component 1 как,

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

    if myPicker.selectedRow(inComponent: 0) == 1 {
        myPicker.selectRow(3, inComponent: 1, animated: true)
    } else if component == 0 {
        myPicker.selectRow(0, inComponent: 1, animated: true)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...