2016-10-15 2 views
0

bin ich ziemlich neu in Programing und ich versuche eine App zu bauen, aber ich kann nicht herausfinden, wie ich mein Problem beheben kann. All die Hilfe wird gerne geschätzt !!!!Verwendung von nicht aufgelösten Bezeichnern, Erkennung von 2 verschiedenen PickerViews, die dieselben Informationen enthalten. In Swift

Also in meiner App gibt es 2 PickerViews und jeder PickerView enthält die gleichen Informationen. Mein Problem ist, dass ich auf die Informationen von beiden zugreifen möchte, dann verbinden Sie es mit Google oder Yahoo, um die richtige Berechnung zwischen den 2 zu finden, und zeigen Sie diese Berechnung am unteren Rand des Displays an.

Was ich getan habe, ist die Funktion didSelectRow für PickerView, und ich habe eine modale Warnung hinzugefügt, so dass wenn ich durch die PickerView blättern kann ich sagen, dass die Funktion funktioniert, aber es für die PickerViews und ich tut möchten, dass beide PickerViews vollständig getrennte Funktionen haben.

Mein Hauptproblem ist, dass ich nicht auf die Daten von didSelectRow zugreifen kann, so dass ich meine Berechnungen in einer anderen Funktion ausführen kann (ich habe eine Funktion eingerichtet, um die Berechnungen/Konvertierungen mit einem Platzhalter-Multiplikator zu behandeln, bis ich es verbinde zu einer API). Ich weiß, dass die Daten von dieser Funktion außerhalb des Bereichs liegen (das ist der Fehler, den der Compiler mir gibt), aber ich kann nicht herausfinden, wie ich auf die Informationen zugreifen kann, die ich seit ein paar Wochen gesucht habe.

Vielen Dank !!!! All die Hilfe wird gerne geschätzt !!!!! Ps. Das ist in Swift.

Antwort

1

Wenn Sie @IBOutlet s auf Ihre zwei pickerViews erstellen:

@IBOutlet weak var picker1: UIPickerView! 
@IBOutlet weak var picker2: UIPickerView! 

können Sie die ausgewählte Zeile für jeden mit Zugriff:

let row1 = picker1.selectedRow(inComponent: 0) 
let row2 = picker2.selectedRow(inComponent: 0) 

Sie können dann diejenigen, die als Indizes in den Arrays verwenden, die Liefern der Daten für Ihre Pflücker.

Als Beispiel habe ich eine Ansicht mit zwei Kommissionierer und ich die Summe drucken, wenn eine der Kommissionierer Änderungen:

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource { 

    @IBOutlet weak var picker1: UIPickerView! 
    @IBOutlet weak var picker2: UIPickerView! 

    var data = [1, 2, 3, 4, 5] 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
    } 

    func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
     let sum = data[picker1.selectedRow(inComponent: 0)] + data[picker2.selectedRow(inComponent: 0)] 
     print(sum) 
    } 

    func numberOfComponents(in pickerView: UIPickerView) -> Int { 
     return 1 
    } 

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

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

Ich habe genau das, was Sie da haben, mit Ausnahme ich eine seprate Funktion haben müssen für die Berechnungen/Konvertierungen, weil es sich mit der API verbinden und die Strings in Zahlen aus dem TextField konvertieren müsste, die ich bereits habe. Alles, was ich brauche, ist der Titel aus den in den PickerViews ausgewählten Daten, die zusammen mit den Berechnungen in einem Etikett am unteren Rand des Displays angezeigt werden. –

+0

Verstehst du, worüber ich rede, oder willst du, dass ich tiefer gehe? –

+0

Also ich brauche nur den Namen aus den Daten in dieser didSelect-Funktion in einer anderen Funktion anzuzeigen, aber ich habe ein Problem mit dem Umfang und habe keine Ahnung, wie Sie es beheben. –

Verwandte Themen