Передать данные строки метки в UIPickerView - PullRequest
0 голосов
/ 16 декабря 2018

Я не знаком с UIPickerView.Теперь у меня есть два контроллера, скажем, контроллер A и контроллер B. Контроллер A имеет метку под названием «яблоко», а контроллер B имеет UIPickerView с данными [«банан», «арбуз», «клубника»].

Вопрос в том, что если мне нужно передать «яблоко» с контроллера A на контроллер B и показать на UIPickerView, что мне делать?

Я пытался использовать функцию titleForRow в контроллере Bкак показано ниже.

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    fruitData[row] = self.data.name ?? ""
    return fruitData[row]
}

data.name - это «яблоко», как я упоминал ранее.После того, как я согласился, заголовок для pickerView показал три «яблока».Видимо, это не то, что я искал.Мне нужно «яблочное» шоу, но также нужно хранить массив данных [«банан», «арбуз», «клубника»].Поскольку я хотел бы изменить значение UIPickerView обратно на контроллер А, я должен сохранить данные массива, в противном случае у меня есть только «яблоко» в качестве выбора.

Может кто-нибудь помочь мне с этим, пожалуйста?Спасибо.

1 Ответ

0 голосов
/ 16 декабря 2018

Просто, добавьте"яблоко" к вашему источнику данных и затем перезагрузите сборщик.

fruitData.append(data.name)
yourPickerView.reloadAllComponents()

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

fruitData.insert("apple", at: 0)

Или что-то лучше было бы вставить плод в правильное положение .Видя, что ваш в порядке возрастания.

if let index = fruitData.firstIndex(where: { data.name < $0 }) {
    fruitData.insert(data.name, at: index)
} else {
    fruitData.append(data.name)
}
...