Ich versuche, etwas sehr Einfaches zu tun: Stellen Sie ein Segment so ein, dass Sie, wenn Sie auf eine Zelle in einer Tabelle klicken, zu einem anderen View-Controller gelangen. Das Problem, glaube ich, rührt von der Tatsache her, dass das TableView, in dem sich diese Zellen befinden, in einem regulären ViewController (im Gegensatz zu einem TableViewController) eingebettet ist und eine von zwei Unteransichten in diesem ViewController ist.
Soweit ich das beurteilen kann, habe ich alles richtig eingerichtet: Ich habe den ViewController mit den beiden Teilansichten in einem Navigations-Contoller eingebettet, als dataSource und Delegate für das TableView festgelegt und einen Push-Übergang von a erstellt TableViewCell zu meinem zweiten View-Controller im Storyboard. Wenn die App jedoch ausgeführt wird und ein Benutzer auf eine Zeile in der Tabelle klickt, wird lediglich die Zeile ausgewählt und das Segment wird überhaupt nicht ausgelöst (ich habe es debuggt und die prepareForSegue-Funktion wird nicht einmal aufgerufen) / p>
Gibt es etwas, das mir hier fehlt? Oder ist das aus irgendeinem Grund nicht möglich, wenn das TableView nicht die einzige Ansicht in seinem Ansichtscontroller ist?
Das mag Ihnen helfen oder auch nicht, aber ich bin auf dieses Problem gestoßen, weil ich zwei verschiedene Zelltypen definiert und didSelectRowAtIndexPath
implementiert hatte. Ich musste [self performSegueWithIdentifier:@"Whatever" sender:self]
als Teil von didSelectRowAtIndexPath
hinzufügen und das Problem wurde gelöst.
Wenn Sie in der Lage sind, mindestens eine Zeilenauswahl zu erkennen, können Sie diese Methode möglicherweise nutzen.
Wenn Sie das Zellenrendering angepasst haben, z. B .:
%Vor%Stellen Sie dann sicher, dass Sie den gleichen Zellenbezeichner verwenden, der für die Prototypzelle in ste story angegeben wurde.
In diesem Fall sollte der 'Bezeichner' der Zelle, die das Segment verbunden hat, auf ' Zelle ' gesetzt sein.
Ich finde, dass, wenn ich vor kurzem das Segment von der Accessory-Ansicht der Zelle verdrahtet hatte, später das Segment löschte und versuchte, einen neuen Abschnitt direkt mit der Zelle zu verbinden, nicht (mit Xcode 4.6 .2) - Xcode verbindet das Segment immer mit der Zubehöransicht (auch wenn keine vorhanden ist)! Die Art, wie ich es behoben habe, ist, indem ich die Zelle in IB auswähle und den Verbindungsinspektor verwende, um (1) den ursprünglichen "Zusatzaktions" -Segment zu löschen und (2) den "Auswahl" -Segment direkt durch Ziehen von dem gefüllten Kreis in dem Bild unten zu verkabeln an den entsprechenden Zielansicht-Controller.
Wenn Sie das StoryBoard in Xcode erstellen, gehen Sie folgendermaßen vor:
Das ist es. Wahrscheinlich möchten Sie die Eigenschaften von UITableViewCell beispielsweise als Ihre Unterklasse von UITableViewCell bearbeiten.
Ich hatte das gleiche Problem. Fix ist 1. Schreiben Sie SegueIdentifier für das Segment im Storyboard 2. Fügen Sie die folgende Zeile hinzu [self performSegueWithIdentifier: @ "SegueIdentifier" sender: nil]; in didSelectRowAtIndexPath.
Ich hoffe, das würde helfen.
Hatte das gleiche Problem. Das Aussetzen aus einer Prototyp-Tabellenansichtszelle in einem normalen View-Controller würde die App zum Absturz bringen. Falls jemand das gleiche Problem hat.
Meine Lösung:
Wenn Sie ein Push-Segment verwenden, stellen Sie sicher, dass Ihr erster View-Controller mit der Tabellenansicht in einen Navigations-Controller eingebettet ist, da sonst "Push-Segmente" nicht funktionieren. Zeigen Sie auch auf den Ziel-View-Controller, nicht auf den Navigations-Controller!
Und wie bereits erwähnt, stellen Sie sicher, dass Ihre "segue identifiers" korrekt sind.
bei "didSelectRowAtIndexPath" Ich rufe "[self performSegueWithIdentifier: @" Your_destination_View_Controller "sender: self];
Tags und Links objective-c uitableview xcode