0
我在尋找非常多,但我沒有找到我的問題的答案。 我的應用程序應該改變另一個選擇器更改後的一個選擇器的數據。你可以看到,在titleForRow方法中,我想設置數據,我也知道這個方法只是調用一次,但我不知道在哪裏以及如何做。更改UIPickerView Swift的數據
我認爲,在didSelectRow方法中,我也可以設置數據,但是在那裏我沒有閃光燈,我應該怎麼做。
這是我的代碼,我希望這是有幫助的。
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
var x = 0
@IBOutlet weak var leaguePicker: UIPickerView!
@IBOutlet weak var clubPicker: UIPickerView!
let league = ["Bundesliga", "Premier League"]
let club = [["ManCity", "Arsenal"],["Bayern", "Dortmund"]]
override func viewDidLoad() {
super.viewDidLoad()
leaguePicker.delegate = self
leaguePicker.dataSource = self
clubPicker.delegate = self
clubPicker.dataSource = self
}
func numberOfComponents(in picker: UIPickerView) -> Int {
return 1
}
func pickerView(_ picker: UIPickerView, numberOfRowsInComponent component: Int) -> Int
{
switch (picker){
case leaguePicker:
return league.count
case clubPicker:
return club.count
default:
return 1
}
}
func pickerView(_ picker: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
switch (picker){
case leaguePicker:
return league[row]
case clubPicker:
if (x==0){
print("titleForRow call.. x=0")
return club[0][row]
// this is just happening at the beginning
} else {
print("titleForRow call.. x=1")
return club[1][row]
// this does not happen
}
default: return "an error occurred"
}
}
func pickerView(_ picker: UIPickerView, didSelectRow row: Int, inComponent component: Int)
{
if (picker == leaguePicker) {
if (row==0){
//clubPicker.selectRow(0, inComponent: 0, animated: true)
x=0
} else {
x=1 // this call is working
//clubPicker.selectRow(0, inComponent: 1, animated: true)
}
}
picker.reloadAllComponents()
//this does not lead to call titleForRow
}
}