2016-07-12 12 views
0

In der Funktion "Vorbereiten" in meinem Tabellenansicht-Controller scheint ein Fehler mit dem Indexpfad zu erhalten.Zugriff auf eine Tabellenansicht IndexPath von prepareForSegue

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if(segue.identifier == "showView"){ 
     let detailVC: DetailViewController = segue.destinationViewController as! DetailViewController 
     let indexPath = self.MainTableView.indexPathForSelectedRow! 

     detailVC.test_label.text = names[indexPath.row] 
     self.MainTableView.deselectRowAtIndexPath(indexPath, animated: 
    } 
} 

Für indexPath.row heißt es "BAD_INSTRUCTION". Wenn ich die Zeile lösche, die das Array names indexiert, wird der Fehler BAD INSTRUCTION in der Zeile darüber (die IndexPath-Definitionszeile) ausgegeben. Wenn ich das ändere! Nach indexPathForSelectedRow to() steht "Keine Funktion". Ich kann nicht herausfinden, was zu tun ist, um den richtigen Indexpfad für die ausgewählte Zeile zu erhalten! Wer weiß was vor sich geht?

- Der Fehler in der Konsole ist: fataler Fehler: unerwartet gefunden null, während ein optionaler Wert Abwickeln

+0

Können Sie anzeigen, wo MainTableView in Bezug auf diese Klasse definiert ist? – CodeBender

+1

In welcher Linie bremst es? – Amloelxer

+0

@CodeBender 'Klasse MainTableViewController: UITableViewController { @IBOutlet var MainTableView: UITableView' –

Antwort

0

Platz ein Haltepunkt auf der let indexPath = ... Linie. Sehen Sie, ob das Objekt MainTableView Null ist oder nicht, da Sie wahrscheinlich abstürzen, weil es ein Nil-Objekt zwangsweise auspackt. Wenn es nichts ist, überprüfen Sie Ihre Verbindungen zu Ihrer Storyboard/XIB-Datei.

0
Here please find this code. This should work fine. 

Oder ändern! zu? in deinem Code. // Lassen Sie indexPath = self.MainTableView.IndexPathForSelectedRow?

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 

{ 

if(segue.identifier == "showView") 

    { 

    let detailVC = segue.destinationViewController as! ViewController2 
      let path = tableView.indexPathForSelectedRow?.row 
      detailVC.test_label.text = names[path] 
    } 
}