Я нашел этот ответ How do I setup a second component with a UIPickerView, и это было полезно, но я хочу сделать больше. Я хочу, чтобы данные второго компонента зависели от первого. Вот мой кодUIPickerView несколько компонентов в swift
class timerScreen: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
// where all the outlets are setup
@IBOutlet weak var pickerViewOutlet: UIPickerView!
// where I try to set up all my variables and constants
let cubesToWorkWith = ["3X3", "2X2", "4X4", "5X5", "6X6", "7X7", "Skewb", "Square-One"]
let firstArray = ["cross", "OLL", "Pll", "Corners", "Edges"]
let SecondArray = ["OLL" "Pll"]
// where the picker view is set up.
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 2
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return cubesToWorkWith.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return cubesToWorkWith[row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
cubeSelected = Int16(row)
}
}
Я хочу firstArray, который будет отображаться во втором компоненте, если «3х3» в данный момент выбран в первом компоненте и secondArray если «2х2» выбран. Как бы Вы это сделали? спасибо за любую помощь заранее!
Im получаю ошибку " Невозможно преобразовать возвращаемое выражение типа '[String]', чтобы вернуть тип 'String?' "в getArrayForRow (строка), вложенная внутри titleForRow –
Ответ неверный. Он даже не компилируется. Массив s возвращается туда, где ожидается String. '-> String!' Также не имеет смысла. – shallowThought
Я обновил ответ. На самом деле его возвращаемым типом является String и я возвращаю массив строк. Это своего рода опечатка. Я не компилировал это на xcode или не использовал его только мой оцененный ответ, чтобы дать вам парни указания – iProgrammer