2017-07-11 14 views
0

pickerViewの両方のコンポーネントから情報を取得する方法を説明する場所が見つかりません。現在は、最後に移動したコンポーネントの文字列をテストラベルに置きます。私は実際に店舗にいる必要はありませんが、それらにアクセスするだけです。また、私がコメントアウトした配列形式を使用したいと思います。2つのコンポーネントpickerViewで両方の変数を見つける

@IBOutlet weak var itemPickerView: UIPickerView! 

var pickerViewArray = [["Items", "Key", "Rock"], ["Action", "Turn", "Hit"]] 

func numberOfComponents(in pickerView: UIPickerView) -> Int { 
    return pickerViewArray.count 
} 

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

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

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    itemSelected = pickerViewArray[component][row] 
    pickerOutletTest.text = itemSelected 
} 

@IBOutlet weak var pickerOutletTest: UILabel! 

答えて

0

の省略形である

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 

    let selectedItems = (0..<pickerViewArray.count).map{ pickerViewArray[$0][pickerView.selectedRow(inComponent: $0)]} 
    print(selectedItems) 
} 

と、すべてのコンポーネントで選択された項目の配列を取得することができdidSelectRowメソッドを下のもので変更してください。

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    pickerOutletTest.text = pickerViewArray[0][pickerView.selectedRow(inComponent: 0)] + " " + pickerViewArray[1][pickerView.selectedRow(inComponent: 1)] 
} 
+0

このコードをご覧いただきありがとうございます。すぐに役立つかもしれません。適切な説明は、なぜこれが問題の良い解決策であるのかを示すことによって、その教育的価値を大幅に向上させるでしょう(https://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)。類似しているが同一ではない質問を持つ将来の読者にとって、より有用なものにする。説明を追加するためにあなたの答えを編集し、どのような制限と前提が適用されるかを示してください。 – basvk

+1

この回答はもっと正直なようで、ちょっと乱雑になって私の理解のレベルでうまくいった。私はこの picker1 = pickerViewArray [0]にして、それを破った[pickerView.selectedRow(inComponent:0)] + "" picker2 = pickerViewArray [1] [pickerView.selectedRow(inComponent:1)] + "" – Dmar

+0

はありがとうございます。ハッピーコーディング。 –

0

あなたはそれらの選択された値にコンポーネントインデックスのmap pingが

var selectedItems = [String]() 
for component in 0..<pickerViewArray.count { 
    let selectedRow = pickerView.selectedRow(inComponent: component) 
    selectedItems.append(pickerViewArray[component][selectedRow]) 
} 
+0

私はこれが好きで、何が起こっているかを完全に理解すればおそらくそれに変更されます。しかし、現時点ではそれは私の頭の上です。 – Dmar

関連する問題