UIPickerView передача данных в представление контейнера - PullRequest
0 голосов
/ 10 июня 2019

Я просмотрел некоторые вопросы о представлении контейнера в StacksOverflow, но ни один из них не использует представление средства выбора для передачи данных в мою ячейку представления таблицы в представлении контейнера. Я пытался использовать:

    func pickerView( _ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "containerSettingsSegue" {
            let destination = segue.destination as! SettingsTableViewController
            destination.delegate = self
            destination.languageDetail.text = myPickerData[row]
        }
    }
}

, а также

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "containerSettingsSegue" {
        let destination = segue.destination as! SettingsTableViewController
        destination.delegate = self
    }
}

Оба кода выше в моем родительском представлении.

Однако это не работает. Есть ли способы, которыми я могу это сделать?

1 Ответ

1 голос
/ 10 июня 2019

Спасибо @TBlank за ответ https://stackoverflow.com/a/34349405/1142743

Так что согласно его коду ответа должно быть, как показано ниже:

Объявите экземпляр SettingsTableViewController в SettingsViewController как:

var childView : SettingsTableViewController?


override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "containerSettingsSegue" {
            childView = segue.destination as? SettingsTableViewController
            childView!.delegate = self
        }


     }


func pickerView( _ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
            childView?.changeLabel(text: myPickerData[row])
    }

Итак, теперь объявите метод в SettingsTableViewController, как показано ниже

func changeLabel(text: String) {
        languageDetail.text = text
    }
...