Каскадный UIPickerView в разных UITableViewCell - PullRequest
0 голосов
/ 04 июня 2018

У меня есть два разных UIPickerView, которые находятся в разных пользовательских UITableViewCell.Первые UIPickerView данные, загруженные на страницу загрузки.И второй pickerView загружается после того, как сделан первый выбор pickerView.Как передать первое выбранное значение второму pickerView?Я не могу использовать ячейку didSelect, потому что PickerView уже отслеживает взаимодействие, поэтому не запускает табличное представление delegate.

Мой код:

extension ReservationViewController: UITableViewDelegate {

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    if indexPath.row == ReservationCell.MakeReservation.rawValue {
            //print value --> this is not firing
        }
    }

    func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
        if indexPath.row == ReservationCell.MakeReservation.rawValue {
        //print value --> this not firing
        }
    }
}

extension ReservationLocationTableViewCell: UIPickerViewDataSource, UIPickerViewDelegate {
    func numberOfComponents(in pickerView: UIPickerView) -> Int {
        return 1
    }
    //Set number of rows in components

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {

        return self.data.count

    }
    //Set title for each row
    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {

        return data[row]


    }
    // Update textfield text when row is selected
    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {

        print(data[row]) // I want to pass this value to next cell that contains another PickerView

    }
}

Как я передал значение данных в следующую ячейку?

1 Ответ

0 голосов
/ 04 июня 2018

Сначала сохраните выбранные данные data[row] или row где-нибудь в вашем ReservationViewController.Затем вы можете перезагрузить ваш tableView, чтобы сделать логику для вашего второго UIPickerView.

var selectedRow: Int = 0

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

    print(data[row]) // I want to pass this value to next cell that contains another PickerView

    // save the row
    selectedRow = row
    // do your logic in tableView's cellForRowAtIndexPath
    tableView.reloadData()
}
...