2017-06-20 3 views
0

Ich habe diese Frage recherchiert, aber nicht in der Lage, nach etwa einer Stunde eine Antwort zu finden. Ich habe eine CardTableView in einer ViewController als Root und eine zweite Tabellenansicht mit der Kennung workTableView. Ich möchte workTableView auf CardTableView drücken, wenn eine Zelle ausgewählt ist und ein Array an die workTableView senden. Ich möchte das mit einem Show-Segment machen. HierSchieben Sie einen UITableViewController auf eine ViewController UITableView

ist, was ich versucht habe, in dem ViewController die CardTableView enthält:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    //NSLog("You selected cell number: \(indexPath.row)!") 

    tableView.deselectRow(at: indexPath, animated: true) 


    let vc = UIStoryboard(name:"Workout", bundle:nil).instantiateViewController(withIdentifier: "workTableView") as! TableViewController 
print("selected") 
    self.navigationController?.pushViewController(vc, animated: true) 
} 

ich die workTableView in Storyboard erstellt, aber es möchte programmatisch schließlich erstellen.

+0

löschen 'self.window .rootViewController = nav1' und' self.window .makeKeyAndVisible() '!?. Übrigens, warum müssen Sie diesem Ansatz folgen? Sie können Ihren View-Controller nur dann "präsentieren", wenn eine Zelle ausgewählt ist. – nayem

+0

Ich würde empfehlen, ein paar einfache Tutorials über das Präsentieren von View-Controllern zu lesen. – SomaMan

+0

@nayem Ich glaube nicht, dass ich "präsentieren" kann, weil die Root-Ansicht kein Controller ist, ist es in einem Controller – defoification

Antwort

1

Ersetzen Sie Ihre tableView(_:didSelectRowAT:) Methode mit diesem:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

    tableView.deselectRow(at: indexPath, animated: false) 
    let storyboard = UIStoryboard(name: "Workout", bundle: nil) 
    let nextScene = storyboard.instantiateViewController(withIdentifier: "SecondTableViewControllerStoryboardIdentifier") as! TableViewController // TableViewController <- must be changed to the name of the Second View Controller class 

    nextScene.dataToPass = something you want to pass // dataToPass is the variable that you declare in your Second View Controller 

    self.navigationController?.pushViewController(nextScene, animated: true) 
} 
+0

Sorry, ich habe nicht geklärt Diese Frage reicht aus. Siehe meine Bearbeitung. Eigentlich habe ich nur ein 'UITableView'. Diese Tabellenansicht befindet sich in einem 'UIViewController'. würde ich das noch in der 'UITableView' überschreiben oder muss ich es in eine' UITableViewController' ändern? – defoification

+0

Siehe meine Bearbeitung. Lösche 'override' Schlüsselwort. @defoification – nayem

+0

und in welcher Klasse stelle ich diese Methode ein, 'ViewController' oder' UITableView'? – defoification

Verwandte Themen