Как я могу быстро добраться до названия выбранного элемента и значения элемента в сборщике?

Позвольте мне сначала описать сторону контроллера представления (дизайн страницы). Я добавил один вид выбора, одну метку и одну кнопку, вот мой файл viewController

import UIKit

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
    //var myArray2 = [["Alex", "de Souza", "1977"],["Ariel", "Ortega", "1974"],["Lefter", "KucukAndonyadis", "1925"]]
    //structure of myArray2: name, lastname, bday

    var myArray = ["Alex", "de Souza", "1977"]

    var indexValueOfSelectedItem = 0
    var nameValueOfSelectedItem = ""
    var lastnameValueOfSelectedItem = ""
    var bdateOfSelectedItem = 0

    @IBOutlet weak var lblResult: UILabel!
    @IBOutlet weak var pickerStudent: UIPickerView!
    override func viewDidLoad() {
        super.viewDidLoad()
        pickerStudent.delegate = self
        pickerStudent.dataSource = self
    }

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

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

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

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
        indexValueOfSelectedItem = row
        //nameValueOfSelectedItem = row
        //lastnameValueOfSelectedItem = row
        //bdateOfSelectedItem = row
    }

    @IBAction func buttonClick(_ sender: Any) {
        lblResult.text = String (indexValueOfSelectedItem)
    }
}

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


person mannyCalavera    schedule 15.05.2018    source источник


Ответы (3)


вы можете получить значение по

@IBAction func buttonClick(_ sender: Any) {
lblResult.text =  myArray[pickerStudent.selectedRow(inComponent: 0)]} }

и для получения выбранного индекса вы можете использовать

pickerStudent.selectedRow(inComponent: 0)

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

person Devil Decoder    schedule 15.05.2018

person    schedule
comment
Спасибо. но это показывает имя, фамилию, день рождения в сборщике. Я хотел бы показать только имена. но я хотел бы получить фамилию, день рождения, имя и индекс выбранного элемента с различными переменными, которые я объявил в глобальной области до определения выхода lblResult @Khushbu - person mannyCalavera; 15.05.2018
comment
@ user3615345 Я отредактировал свой ответ в соответствии с вашими требованиями. - person Khushbu; 15.05.2018
comment
Это то, что я хочу. оценил. @Хушбу - person mannyCalavera; 15.05.2018

person    schedule
comment
titleForRow выдает ошибку: невозможно преобразовать возвращаемое выражение «[String]» в возвращаемый тип «String?» @ Таймур Сулеман (спасибо) - person mannyCalavera; 15.05.2018
comment
не удается преобразовать возвращаемое выражение «[String]» в возвращаемый тип «String?» @Таймур Сулеман - person mannyCalavera; 15.05.2018
comment
попробуйте эту строку в заголовке для возврата строки pickerDataSource[row][0] - person Taimoor Suleman; 15.05.2018
comment
Теперь это работает. Я получаю всю выбранную строку. Так что я могу разобрать его, не так ли? Потому что я получаю имя, фамилию, день рождения все вместе, как это: Lefter, KucukAndonyadis, 1925] @Taimoor Suleman - person mannyCalavera; 15.05.2018
comment
да, если вы считаете это правильным ответом, отметьте его как правильный ответ и проголосуйте за него. Спасибо. - person Taimoor Suleman; 15.05.2018