0
私は検索していましたが、私の質問に答えが見つかりませんでした。 私のアプリは、他のピッカーが変更された後、あるピッカーのデータを変更する必要があります。UIPickerView Swiftのデータを変更する
titleForRowメソッドでは、データを設定したいと思いますが、このメソッドは一度呼び出されただけですが、どこでどのようにしたらよいか分かりません。
私は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
}
}