2017-07-27 4 views
0

Ich bin neu in Swift und ich versuche, einen PickerView mit einem Array von Namen aus einer anderen Klasse neu zu füllen. Ich habe diese Klasse Notizen, die Notizen erstellt und jede Notiz hat einen Namen/Titel, ich versuche, auf diese Namen/Titel zuzugreifen und sie in Pickerview setzen, kann mir jemand helfen.Zugreifen auf Informationen von einem anderen ViewController

Ich habe zwei verschiedene Pickerview und man arbeitet es ist nur die mit den Namen funktioniert nicht.

override func viewDidLoad() 
{ 
    super.viewDidLoad() 

    fileNamePicker.dataSource = self 
    fileNamePicker.delegate = self 

    gradePicker.dataSource = self 
    gradePicker.delegate = self 

} 


func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int 
{ 
    if pickerView == gradePicker 
    { 
     return grades.count 
    } 
    else 
    { 
     return allNotes.count 
    } 

} 

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

    else 
    { 
     //This is where the Problem is, but I don't know how to fix it. 
     let nameFiles = allNotes[currentNoteindex].name 
     return nameFiles[row] 
    } 

} 

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

'namefiles = allNotes [currentNoteindex] .name' ist bereits ein' String'. Warum gibst du nicht einfach die Var zurück? – Ryan

+0

Ja, ich habe das versucht, aber es funktioniert auch nicht. –

+0

Was meinst du 'funktioniert nicht'? Kannst du hier mehr Details hinzufügen? – Ryan

Antwort

0

nameFiles zugreift einen Namen aus einer Notiz.

nameFiles[row] funktioniert nicht, weil nameFiles kein Array ist. Wenn Sie eine Zeichenfolge zurückgeben möchten, tun Sie einfach return nameFiles. Überprüfen Sie zuerst, ob nameFiles tatsächlich einen Wert hat!

+0

Überprüfen Sie, wo Sie die Namensvariable für die Notizklasse festlegen. – williej926

+1

Danke das funktioniert –

0

Sieht so aus, als wäre Ihr allNotes-Array leer. Sie haben initilaize, aber scheint das Objekt nicht anzuhängen. Erstellen initiliaze Methode innerhalb Note Klasse

init(_ date: String, note: String, name: String) { 
     self.date = date 
     self.note = note 
     self.name = name 
    } 

In Ihrer Viewcontroller Klasse versuchen, wie diese angehängt wird. Jetzt können Sie auf die Methode der Innenauswahl zugreifen: -

Verwandte Themen