Segue nicht immer die ausgewählte Zeile Anzahl

Leite ich Daten aus einer Tabelle view-controller, um eine detail-Ansicht. Ich habe versucht, mit indexPath.row direkt in meine prepareForSegue Methode, aber es zeigt einen Fehler an, der

Verwendung von ungelösten Bezeichner 'indexPath'

So, nach der Suche im web habe ich die variable indexOfSelectedPerson zugewiesen ist, den Wert von indexPath.row. Das problem wenn ich die app im simulator ist, dass prepareForSegue ist immer der erste Wert der indexOfSelectedPerson (0), dann immer den Wert der ausgewählten Zeile erst, nachdem ich es auf. Also, wenn ich drücken Sie die zurück-Taste in den Simulator und wählen Sie eine andere Zeile in der detail-Ansicht zeigt die Informationen der Zeile habe ich das Vorherige mal.

import UIKit

class MasterTableViewController: UITableViewController {

    var people = []
    var indexOfSelectedPerson = 0

    override func viewDidLoad() {
        super.viewDidLoad()

        people = ["Bob", "Doug", "Jill"]
    }

    override func numberOfSectionsInTableView(tableView: UITableView?) -> Int {
       return 1
    }

    override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int {
        return people.count
    }

    override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {

        let cell = tableView!.dequeueReusableCellWithIdentifier("personCell", forIndexPath: indexPath) as UITableViewCell

        cell.text = "\(people[indexPath.row])"

        return cell
    }

    override func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!)
    {
        indexOfSelectedPerson = indexPath.row
    }


    override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {

        if let mySegue = segue.identifier {

            if mySegue == "personDetails" {

                let detailsVC: DetailTableViewController = segue.destinationViewController as DetailTableViewController

                detailsVC.selectedPersonName = "\(people[indexOfSelectedPerson])"
            }
        }
    }
}

Also auswählen Doug, wenn die app das erste mal startet im simulator zeigt die details für Bob, weil indexPathOfSelectedPerson 0 ist. Schlagen Sie die zurück-Taste und dann die Auswahl Jill zeigt die details für Doug weil indexPathOfSelectedPerson wurde 1 wenn ich klickte auf Doug der früheren Zeit. Ich vermute, das problem ergibt sich aus der Reihenfolge, in der die Methoden aufgerufen werden.

InformationsquelleAutor Shades | 2014-07-04
Schreibe einen Kommentar