Несколько UIPickerView выбрать первый ряд программно в Swift - PullRequest
0 голосов
/ 22 ноября 2018

Я нахожу такой же случай для одного pickerView, я скажу такие же слова, как показано ниже:

У меня есть pickerView, который появляется, когда внутри нажимается textField.Пользователь выбирает свое местоположение в pickerView, и оно помещается в textField.

. При открытии pickerView ползунок находится на первом элементе, но если я нажимаю кнопку «Готово», чтобы свести к минимумуpickerView, что ни один элемент не выбран (т. е. вы должны прокрутить вниз и назад, чтобы выбрать первый элемент)

Я могу сделать для textField и pickerView.Но у меня есть 3 textFields и 3 pickerViews.Можно ли сделать для каждого pickerView?

Ниже блока кода, работает для одного.

func textFieldDidBeginEditing(_ textField: UITextField) {
    if textField == yourTextField {
        self.yourPickerView.selectRow(0, inComponent: 0, animated: true)
        self.pickerView(yourPickerView, didSelectRow: 0, inComponent: 0)
    }
}

1 Ответ

0 голосов
/ 22 ноября 2018

Как вы описали в комментарии, вы хотите начать редактирование textField, когда пользователь нажимает на определенный textField, если текст предыдущего textField не пуст.Поэтому используйте textFieldShouldBeginEditing метод делегата следующим образом:

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
    if textField == textField1 {
        return true
    } else if textField == textField2 && !textField1.isEmpty {
        return true
    } else if textField == textField3 && !textField2.isEmpty {
        return true
    }
    return false
}

Затем, когда редактирование textField начнется, отобразите конкретное представление выбора

func textFieldDidBeginEditing(_ textField: UITextField) {
    if textField == textField1 {
        // show pickerView1
    } else if textField == textField2 {
        // show pickerView2
    } else if textField == textField3 {
        // show pickerView3
    }
}

, а затем, когда пользователь выберет строку, вы хотите изменить текст в textField.

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    if pickerView == pickerView1 {
        textField1.text = items1[row]
    } else if pickerView == pickerView2 {
        textField2.text = items2[row]
    } else if pickerView == pickerView3 {
        textField3.text = items3[row]
    }
}
...