2016-04-09 14 views
0

Ich habe einen Table View Controller und jede Zelle enthält Benutzerinformationen: Name, Foto und Alter.Wie bekomme ich einen Wert der ausgewählten Zeile von didSelectRowAtIndexPath?

Ich möchte, wenn ich Benutzer aus der Tabellenansicht wählen alle Informationen des Benutzers in einer anderen Ansicht von seiner ID anzeigen, aber er ist nicht innerhalb der Zelle, es ist in einem Server gespeichert, ich lade IDs nicht, wenn alle laden Benutzer in einer Tabelle, weil ich es nicht in dieser Zeit brauche, ich habe nur Namen, Foto und Alter, was kann ich tun?

Ich habe darüber nachgedacht eine Variable innerhalb der Zelle zu erklären, dass die ID darstellen, diese Variable ohne Druck nur id vom Server zu laden, wie folgt aus:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
       let student = Student.students[indexPath.row] 
    if let cell = tableView.dequeueReusableCellWithIdentifier("ourCell", forIndexPath: indexPath) as? MyCellTableViewCell { 

     var x = loadInfo.id // here id declare variable 

    return cell 
    } 

Und nachdem dann Funktion didSelectRowAtIndexPath() zu wissen, welchen Benutzer ich ausgewählt habe, aber auf diese Weise habe ich nur Zelle indexPath in Funktion didSelectRowAtIndexPath(), kann ich über indexPath auf meine Variable zugreifen, die Benutzer-ID enthält? Oder ist es besser, das zu tun?

+1

nie - es sei denn, Sie absolut keine andere Wahl haben - Einsatz Tabellenansicht Zellen (die Ansicht) Daten gemeinsam nutzen, verwenden immer das Datenquellenarray (das Modell). – vadian

+0

@vadian meinst du ich habe Variable in der Zelle "Ansicht" deklarieren und dann darauf zugreifen? Wie kann ich auf diese Variable zugreifen in didSelectRowAtIndexPath() – amjad

+0

Legen Sie alle benötigten Daten in das 'Studenten'-Array und holen Sie es von dort, da Sie den Indexpfad haben. – vadian

Antwort

1

Es hört sich so an, als würden Sie sich größere Kopfschmerzen machen, wenn Sie die IDs nicht vom Server abrufen. Wenn Sie die IDs mit den Benutzerinformationen abrufen und in einer Gruppe von Schülern speichern; dann, wenn eine Zelle in der DidSelectRowAtIndexPath ausgewählt ist, Sie einfach die Informationen wie diese in den Viewcontroller abrufen können:

let studentInfo = Student.students[indexPath.row] 
var studentId = studentInfo.id() 
+0

Zustimmen. Besser, Informationen im Array statt einer Zelle zu speichern. – kelin

Verwandte Themen