0

Ich habe eine iPhone-App, die in der 2.x-Version des SDK funktioniert. Wenn ich auf 3.0 aktualisiert habe, wird die didSelectRowAtIndexPath-Methode nicht mehr aufgerufen, sodass die Aktion nicht ausgeführt wird, wenn ein Benutzer eine Zeile markiert. Dies ist eine benutzerdefinierte UITableViewCell, die sich in einer separaten Nib von der UITableView befindet. Sowohl die Datenquelle als auch der Datendelegate sind in Interface Builder richtig verdrahtet, und wenn ich es zu 2.21 kompiliere, funktioniert es. In Version 3.0 macht das Klicken auf die Zeile nichts.iPhone - UITableView nicht aufrufen didSelectRowAtIndexPath-Methode in 3.0 SDK

This question, erwähnt ein ähnliches Problem, aber sie erwähnen einen anderen Ersthelfer, der den Klick nimmt. Ich habe keine First-Responder-Methoden, die an die Zelle oder den Tisch angeschlossen sind.

Wie kann ich die Tabelle in 2.x und 3.0 richtig funktionieren lassen? Die benutzerdefinierte Zelle hat ein paar Beschriftungen und ein Bild, und ich möchte nur auf eine Zeile klicken und die Details für diese bestimmte Zeile anzeigen können.

+0

Und Sie sind sicher, dass die Eigenschaft allowsSelection auf YES gesetzt ist? – pix0r

+0

Ja, die allowsSelection -Eigenschaft in UITableView ist auf YES gesetzt. Wenn auf eine Zeile geklickt wird, wird sie für eine Sekunde hervorgehoben und dann wieder normal (nicht hervorgehoben), aber die Methode didSelectRowAtIndexPath auf dem Ansichtscontroller wird nicht aufgerufen. –

+0

Haben Sie überprüft, ob willeSelectRowAtIndexPath funktioniert? –

Antwort

1

Sie werden wahrscheinlich zu viel diese Antwort nicht gefallen ...

Einige Dinge, die in 2.2 gearbeitet, funktionieren nicht in 3.0 (Sie bereits wissen). Einige APIs haben sich geändert, etc ...

Ein paar Dinge sind jedoch anders, weil sie nie in erster Linie funktionieren sollten (nach Apple).

Ich kann nicht sicher sein, dass eine dieser Änderungen Ihr Problem ist, aber es könnte sein. Feinheiten, die mit Federn und Eigenschaften zu tun hatten, waren definitiv betroffen.

Mein Rat wäre:

Zuerst Ihre Feder-Verbindungen überprüfen, Vielleicht haben Sie eine Verbindung haben fehlt, dass 2.2 Sie entkommen lassen mit, aber 3.0 nicht.

Als nächstes erstellen Sie eine Test-App mit einer einfachen Tabellenansicht und sehen, ob Sie es zur Arbeit bringen können. Wenn dies der Fall ist, sollten Sie beginnen, Komplexität aus Ihrem Code in die Test-App einzufügen, bis sie zum Erliegen kommt.

Das kann leider einige Zeit dauern. Sie können auch etwas Code posten, um zu sehen, ob wir etwas finden können.

+0

Ich habe schließlich eine neue Feder erstellt, die Steuerelemente kopiert und auf die gleiche Weise neu verdrahtet. Das hat funktioniert. Ich habe ein diff der xib Dateien und den einzigen großen Unterschiedes in dem neuen diese Linie war: 3.0 Ich weiß nicht, warum das nicht von XCode hinzugefügt wurde, als ich speicherte die alte xib mit Version 3.0.Das scheint der einzige Unterschied zu sein und nun funktioniert die Xib richtig. –

+0

Danke Corey, Sie haben Recht! Ich hatte das gleiche Problem mit einem neuen TableView-Controller in 4.x. Es stellte sich heraus, dass ich einen Rogue-Toolbar-Ausgang hatte, der nicht richtig angeschlossen war. Nachdem ich die Steckdose-Referenz in der Spitze meines TableViewController entfernt hatte, wurde der didSelectRowAtIndexPath aufgerufen. –

0

Ich hatte das gleiche Problem. Ich habe Stunden damit verbracht, alles zu versuchen, was du dir vorstellen kannst. Das Lustige war, dass es kein Problem mit meinem Code war.

Ich benutze Objective Resource und nach der Aktualisierung auf Version 1.0.1 ging das Problem weg. Überprüfen Sie alle Bibliotheken von Drittanbietern, und stellen Sie sicher, dass Sie die neuesten Bibliotheken verwenden, um sicherzustellen, dass Sie ihre 3.0-Änderungen haben.

Verwandte Themen