Table Seed funktioniert nicht

8

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?

    
generaltsow 21.04.2012, 21:31
quelle

6 Antworten

4

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.

    
LNI 17.09.2012 00:29
quelle
4

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.

    
Rodinia 07.04.2013 20:06
quelle
4

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.

    
wcochran 22.05.2013 05:35
quelle
2

Wenn Sie das StoryBoard in Xcode erstellen, gehen Sie folgendermaßen vor:

  1. Erstellen Sie einen UITableViewController
  2. Fügen Sie einen Prototyp UITableViewCell
  3. hinzu
  4. Erstellen Sie den UIViewController, der Ihr Ziel für die Übertragung sein wird.
  5. Strg-Klicken Sie auf den Prototyp UITableViewCell und ziehen Sie ihn auf das Segmentziel.

Das ist es. Wahrscheinlich möchten Sie die Eigenschaften von UITableViewCell beispielsweise als Ihre Unterklasse von UITableViewCell bearbeiten.

    
GoZoner 21.04.2012 21:50
quelle
0

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.

    
Bhupesh Pruthi 01.05.2014 17:24
quelle
-1

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];

    
Out of Orbit 07.04.2014 09:18
quelle

Tags und Links