私の目的は、1つのviewControllerで3つのpickerViewを持つことです。各pickerViewは、以前に保存された設定に応じて異なるデータソースを一覧表示します。これらの設定は、データベースから取得されます。私は、以下のswitch文を使ってデータベースから取得した値に応じて、データソースを設定しました。ビューでSwift 3.0データソース変数を認識できない複数のピッカービュー
は負荷をした、私が設定したピッカーの代表者と一緒に、私が持っている:ピッカー代議員については
switch firstValuePulled {
case "Animals":
var pickerNumber1 = [["Cat", "Dog", "Bird", Fish],["1","2","3","4","5","6"]]
case "Sports":
var pickerNumber1 = [["Basketball", "Hockey", "Baseball", "Tennis", "Football"],["1","2","3","4","5","6"]]
default:
var pickerNumber1 = [["Apple", "Orange", "Peach"],["1","2","3","4","5","6"]]
}
switch second ValuePulled {
case "Animals":
var pickerNumber2 = [["Cat", "Dog", "Bird", Fish],["1","2","3","4","5","6"]]
case "Sports":
var pickerNumber2 = [["Basketball", "Hockey", "Baseball", "Tennis", "Football"],["1","2","3","4","5","6"]]
default:
var pickerNumber2 = [["Apple", "Orange", "Peach"],["1","2","3","4","5","6"]]
}
switch thirdValuePulled {
case "Animals":
var pickerNumber1 = [["Cat", "Dog", "Bird", Fish],["1","2","3","4","5","6"]]
case "Sports":
var pickerNumber1 = [["Basketball", "Hockey", "Baseball", "Tennis", "Football"],["1","2","3","4","5","6"]]
default:
var pickerNumber1 = [["Apple", "Orange", "Peach"],["1","2","3","4","5","6"]]
}
を、エラーが「未解決識別子 『pickerNumber1』の使用」の下に現れます、 "未解決の識別子 'pickerNumber2'の使用などがあります。switch文が正しく実行されなかったので、代理人にはピッカーを表示する値がありませんでしたか?
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 2
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
if (pickerView.tag == 1){
return pickerNumber1[component].count;
} else if (pickerView.tag == 2){
return pickerNumber2[component].count;
} else {
return pickerNumber3[component].count;
}
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! {
if (pickerView.tag == 1){
return pickerNumber1[component][row]
} else if (pickerView.tag == 2){
return pickerNumber2[component][row]
} else {
return pickerNumber3[component][row]
}
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if (pickerView.tag == 1){
eventOneValue = pickerNumber1[0][pickerView.selectedRow(inComponent: 0)]
eventOneNumber = pickerView.selectedRow(inComponent: 1) + 1
print(eventOneValue)
} else if (pickerView.tag == 2) {
eventTwoValue = pickerNumber2[0][pickerView.selectedRow(inComponent: 0)]
eventTwoNumber = pickerView.selectedRow(inComponent: 1) + 1
print(eventTwoValue)
} else {
eventThreeValue = pickerNumber3[0][pickerView.selectedRow(inComponent: 0)]
eventThreeNumber = pickerView.selectedRow(inComponent: 1) + 1
print(eventThreeValue)
}
}
上記のようにpickerNumber1、pickerNumber2、およびpickerNumber3をグローバルスコープとして初期化しましたが、「空のコレクションリテラルには明示的な型が必要です」というエラーが表示されました。あなたはその問題が何であるか知っていますか? – Kevin
配列を型で初期化する必要があります あなたのコードを表示します その配列の文字列の配列を含みます そのようにすることができます var pickerNumber1:Array> = [] –