TableViewCell onclick Segue

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • TableViewCell onclick Segue

    Hey zusammen,

    ich verzweifle hier gerade an einer Sache, die hundertmal ohne Probleme funktioniert und dann plötzlich nicht geht :(

    Es geht um etwas ganz simples.

    Ich habe ein ViewController darin ein UITableView mit der PrototypeCell.

    Nun hole ich aus einer Datenbank die Daten für die Zellen des TableViews. Alles läuft wie es soll bis auf der Klick auf eine Zelle :/

    Eigentlich sollte bei einem Klick auf eine Zelle der Segue aufgerufen werden. Tja klappt in allen anderen Apps nur hier plötzlich nicht?

    So sollte es eigentlich funktionieren:

    Quellcode

    1. override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
    2. if segue.identifier == "mDVSegue" {
    3. let index = self.tableView?.indexPathForSelectedRow()
    4. var destinationViewController: mlDetailView = segue.destinationViewController as mlDetailView
    5. }
    6. }
    Alles anzeigen


    findet ihr einen Fehler?

    Also ein letzter Gedanke ist, das es vielleicht daran liegt, das die anderen Testapps,
    den UITableView direkt in dem 1. ViewController (bei Appstart) anzeigen.

    Hier ist es nun aber so, das der 1. ViewController aufgerufen wird, darin ist ein Button der mich auf den 2. ViewController leitet und in diesem ist dann der UITableView.

    Ich habe leider noch nicht die Erfahrung, um einschätzen zu können, ob sich man da auf etwas achten muss. Aber grundsätzlich würde ich nicht davon ausgehen.

    Da ich nicht weiterkomme, hoffe ich habt einen Hinweis für mich :)

    Grüße
  • Mac & i Test Abo
  • dasdom schrieb:

    Ist im Storyboard alles verknüpft? Also führt ein Segue von der Zelle zum nächsten ViewController? Stimmen die Segue-Identifier im Storyboard mit dem Identifier im Code überein?

    Beschreib mal, was diese Zeile machen soll:

    Quellcode

    1. ​var destinationViewController: mlDetailView = segue.destinationViewController as mlDetailView


    Ja im Storyboard ist die Verknüpfung gesetzt. Die Identifier stimmen auch alle. Das ist echt merkwürdig.

    Die Codezeile ist später dafür da, um Daten zu übergeben. Könnte man eigentlich aktuell noch weglassen.
  • DKCode schrieb:


    Ja im Storyboard ist die Verknüpfung gesetzt. Die Identifier stimmen auch alle. Das ist echt merkwürdig.

    Die Codezeile ist später dafür da, um Daten zu übergeben. Könnte man eigentlich aktuell noch weglassen.


    Beschreibe bitte trotzdem mal, was diese Zeile tun soll. Meiner Meinung nach stimmt das irgendwas nicht. Ich habe keine Ahnung, wie das überhaupt compiliert.
  • dasdom schrieb:

    DKCode schrieb:


    Ja im Storyboard ist die Verknüpfung gesetzt. Die Identifier stimmen auch alle. Das ist echt merkwürdig.

    Die Codezeile ist später dafür da, um Daten zu übergeben. Könnte man eigentlich aktuell noch weglassen.


    Beschreibe bitte trotzdem mal, was diese Zeile tun soll. Meiner Meinung nach stimmt das irgendwas nicht. Ich habe keine Ahnung, wie das überhaupt compiliert.


    Die Codezeile hatte ich aus einem Tutorial-Video eines Swiftentwicklers. Die Variable die dort gesetzt wird, ist dafür da um später mit z.B.

    Quellcode

    1. ​destinationViewController.meineVariable = "XYZ"


    Daten an den neuen ViewController übergeben zu können.

    Ich hab den Code jetzt komplett geändert, da es einfach nicht funktionieren wollte. Ich gehe immer noch davon aus, das es an den verschiedenen Navigationcontrollern liegt. Genau kann ich das aber nicht sagen, da ich den Fehler nicht gefunden habe :/

    Das ganze funktioniert jetzt so :)

    Quellcode

    1. func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    2. tableView.deselectRowAtIndexPath(indexPath, animated: true)
    3. var mlDetailViewcontroller: mlDetailView = self.storyboard!.instantiateViewControllerWithIdentifier("mlDetailView") as mlDetailView
    4. mlDetailViewcontroller.nameString = datastructarray[indexPath.row].id
    5. mlDetailViewcontroller.uId = "1"
    6. self.presentViewController(mlDetailViewcontroller, animated: true, completion: nil)
    7. }
    Alles anzeigen


    Danke für eure Hilfe ! :)