Как заполнить второй контроллер представления информацией, когда строка выбрана в UIPickerView - PullRequest
0 голосов
/ 20 июня 2019

Я создаю свое первое приложение и хочу, чтобы данные отображались во втором контроллере представления при выборе элемента в средстве выбора пользовательского интерфейса.

Когда нажимается панель поиска в моем первом контроллере представления, яхотел бы, чтобы появился пользовательский интерфейс.UI Picker будет отображать названия стран.UI Picker заполнит строку поиска названием выбранной страны.Когда кнопка нажата, я хотел бы выполнить переход ко второму контроллеру представления, который затем будет заполнен информацией о выбранной стране.Я пытаюсь разработать свое первое приложение, и я не могу найти какие-либо учебные пособия на эту тему.Как получить средство выбора пользовательского интерфейса, отображаемое при выборе панели поиска?Как передать информацию второму контроллеру представления на основе выбранной строки сборщика?

Ниже приведен код, который я смог придумать самостоятельно.В противном случае я в тупике.

import UIKit

class ViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
    @IBOutlet weak var countryPicker: UIPickerView!
    @IBOutlet weak var goButtonPressed: UIButton!

    var countryName : [String] = [String]()

    override func viewDidLoad() {
        super.viewDidLoad()

        self.countryPicker.delegate = self
        self.countryPicker.dataSource = self

        countryName = ["Australia", "Bolivia", "Croatia", "Denmark", "Estonia", "France", "Germany", "Hungary"]
    }

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

    func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
        return countryName.count
    }

    func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
        print (countryName[row])
        return countryName[row]
    }
}

1 Ответ

0 голосов
/ 20 июня 2019

Вот как бы я это сделал:

Сначала объявите переменную в вашем первом View Controller и присвойте ей первое значение pickerView:

var selectedCountryName: String = countryName[0]

Затем объявите следующий метод для захвата выбора вида средства выбора и назначьте его ранее объявленной переменной:

// Capture the picker view selection
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent 
component: Int) {
     selectedCountryName = countryName[row]
}

Затем внутри вашего второго контроллера представления объявите ту же переменную selectedCountryName:

var selectedCountryName: String = country[0]

Наконец, передайте название выбранной страны от первого контроллера второго представления в методе prepareForSegue первого контроллера представления:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        let destinationVC = segue.destination as! SecondViewController
        destinationVC.selectedCountryName = selectedCountryName 
    }
...