2016-10-08 4 views
0

Ich mache eine App, wo ein Benutzer die Möglichkeit hat, zwei UIPickers in demselben View-Controller zu verwenden. Wie kann das gemacht werden? Ich möchte, dass ein Pflücker Strandnamen anzeigt und ein anderer zeigt Tiere, die am Strand leben.Zwei Picker im selben UIViewcontroller

Danke für Ihre Hilfe

+0

Welche Bedenken haben für die Verwendung von zwei? Haben Sie Probleme mit der Unterscheidung der Picker innerhalb der Delegate-Methoden? –

+0

Ja, mir ist nicht bewusst, wie Sie ein Array auf die separaten Picker setzen können @IanMoses – Sam

+0

Delegate Methoden enthalten die UIPickerView als Parameter. Sie können jedem UIPicker einen Tag-Wert zuweisen und in jeder Delegate-Methode den Tag-Wert überprüfen. So etwas wie: switch pickerView.tag {case pickerOneTagValue: // Mach etwas hier case pickerTwoTagValue: // Mach etwas anderes hier Standard: break} –

Antwort

0

Hier ist eine kurze Anleitung, dies zu tun:

1.Initialize Kommissionierer und Daten Picker-Sets in der Klasse:

var pickerView1 = UIPickerView() 
var pickerView2 = UIPickerView() 

var pickerView1Data: [String] = ["Waikiki", "Long Beach", ...] 
var pickerView2Data: [String] = ["Crab", "Seal", ...] 

2.Set Delegierten, Daten Quellen und Tags (in viewDidLoad).

pickerView1.dataSource = self 
pickerView1.delegate = self 
pickerView1.tag = 1 

pickerView2.dataSource = self 
pickerView2.delegate = self 
pickerView2.tag = 2 

3.Set Anzahl der Zeilen

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 

    var returnIndex: Int = 0 

    if pickerView.tag == 1 { 
     returnIndex = pickerView1Data.count 
    } else if pickerView.tag == 2 { 
     returnIndex = pickerView2Data.count 
    } 

    return returnIndex 
} 

4.Return Daten für jede Zeile

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 

    var returnRow: String! 

    if pickerView.tag == 1 { 
     returnRow = pickerView1Data[row] 
    } else if pickerView.tag == 2 { 
     returnRow = pickerView2Data[row] 
    } 

    return returnRow 
} 

5.Capture picker Auswahl

func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    // This method is triggered whenever the user makes a change to the picker selection. 

    if pickerView.tag == 1 { 

     beachTextField.text = pickerView1Data[row] 

    } else if pickerView.tag == 2 { 

     animalTextField.text = pickerView2Data[row] 

    } 

} 

Natürlich ist diese ist oben auf alles andere du h müssen Sie tun, um die Picker-Ansichten einzurichten, aber dies sollte alles sein, was für zwei Picker-Ansichten erledigt werden muss.

Verwandte Themen