2016-06-13 4 views
0

Ich erstelle ein Tabellenansichtsmenü und möchte das, wenn Sie auf eine Zelle tippen, um das spezifische Storyboard anzuzeigen. Menü formatiert von 4-Zellen (so 4 verschiedene Storyboard)Es passiert nichts, wenn die Zelle aus der Tabellenansicht angetippt wird.

Hier ist mein Code:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
     _ = tableView.indexPathForSelectedRow! 
     if let _ = tableView.cellForRowAtIndexPath(indexPath){ 
     if indexPath.row == 0{ 
      print("User choose to buy ticket") 
      self.storyboard?.instantiateViewControllerWithIdentifier("SearchPage") 
     }else if indexPath.row == 1{ 
      print("User choose to check the train status") 
      self.storyboard?.instantiateViewControllerWithIdentifier("TrainStatusPage") 
     }else if indexPath.row == 2{ 
      print("User choose to see the upcoming trips") 
      self.storyboard?.instantiateViewControllerWithIdentifier("TripsPage") 
     }else if indexPath.row == 3{ 
      print("User wants to know mor about CFR's facility") 
      self.storyboard?.instantiateViewControllerWithIdentifier("PassengersPage") 
     } 
     } 
    } 

Wenn ich die Zelle am Drücken (egal welche) die Zelle wurde grau und nichts passiert.

enter image description here

enter image description here

+0

denke ich, wäre es besser, mit segues an dieser Stelle zu starten. Werfen Sie einen Blick auf http://www.codingexplorer.com/segue-swift-view-controllers/ –

Antwort

0

Sie wahrscheinlich auf den nächsten Viewcontroller navigieren planen? Dann müssen Sie sagen, dass das Initialisieren einer Instanz nur die Hälfte der Arbeit ist (wenn dies tatsächlich das ist, was Sie tun möchten). So etwas wie unten:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
    var viewController: UIViewController? 
    if indexPath.row == 0 { 
     viewController = storyboard?.instantiateViewControllerWithIdentifier("SearchPage") 
    }else if indexPath.row == 1 { 
     viewController = storyboard?.instantiateViewControllerWithIdentifier("TrainStatusPage") 
    }else if indexPath.row == 2 { 
     viewController = storyboard?.instantiateViewControllerWithIdentifier("TripsPage") 
    }else if indexPath.row == 3 { 
     viewController = storyboard?.instantiateViewControllerWithIdentifier("PassengersPage") 
    } 

    if let destination = viewController { 
     navigationController?.pushViewController(destination, animated: true) 
    } 
} 
0

Sie brauchen nicht diese Zeilen Code zu verwenden: _ = tableView.indexPathForSelectedRow! wenn lassen _ = tableView.cellForRowAtIndexPath (indexPath) {

nur überprüfen, was indexPath.row nach Methode DidSelectRowAtIndexPath empfangen wurde.

So richtig wird wie folgt aussehen:

if indexPath.row == 0{ 
      print("User choose to buy ticket") 
      self.storyboard?.instantiateViewControllerWithIdentifier("SearchPage") 
     }else if indexPath.row == 1{ 
      print("User choose to check the train status") 
      self.storyboard?.instantiateViewControllerWithIdentifier("TrainStatusPage") 
     }else if indexPath.row == 2{ 
      print("User choose to see the upcoming trips") 
      self.storyboard?.instantiateViewControllerWithIdentifier("TripsPage") 
     }else if indexPath.row == 3{ 
      print("User wants to know mor about CFR's facility") 
      self.storyboard?.instantiateViewControllerWithIdentifier("PassengersPage") 
     } 

und Sie können diese Zeile in den Auswahlzustand von Zelle zu entfernen:

tableView(tableView: UITableView, didSelectRowAtIndexPath 
Verwandte Themen