Eine wiederverwendbare UITableViewCell von einem Nib laden
Ich bin in der Lage zu entwerfen benutzerdefinierte UITableViewCells und laden Sie Sie nur fein mit der beschriebenen Technik in den thread gefunden bei http://forums.macrumors.com/showthread.php?t=545061. Jedoch, mit dieser Methode können Sie keine weiteren init die Zelle mit einem reuseIdentifier was bedeutet, dass Sie haben, um völlig neue Instanzen von jeder Zelle bei jedem Anruf. Hat jemand herausgefunden, eine gute Möglichkeit, um noch cache bestimmten Zelltypen verwendet, aber immer noch in der Lage, Sie in Interface Builder?
InformationsquelleAutor der Frage Greg Martin | 2009-01-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur implementieren Sie eine Methode mit der entsprechenden Signatur der Methode:
InformationsquelleAutor der Antwort Louis Gerbarg
Eigentlich, da Sie den Aufbau der Zelle im Interface Builder einfach den reuse-identifier gibt es:
Oder wenn Sie mit Xcode 4, überprüfen Sie die Attribute inspector-Registerkarte:
(Edit: Nach Ihrem XIB erzeugt XCode enthält es eine leere UIView, aber wir brauchen eine UITableViewCell; so müssen Sie manuell entfernen Sie die UIView und fügen Sie eine Table View Cell. Natürlich, IB zeigen keine UITableViewCell Parameter für eine UIView.)
InformationsquelleAutor der Antwort Tim Keating
Nun in iOS 5 gibt es eine entsprechende Methode für UITableView:
InformationsquelleAutor der Antwort wzs
Ich kann mich nicht erinnern, wo ich fand, dass dieser code ursprünglich aus, aber es funktioniert bestens für mich so weit.
Beispiel Interface Builder einrichten...
alt-text http://i32.tinypic.com/a9mnap.jpg
InformationsquelleAutor der Antwort jrainbow
Blick auf die Antwort, die ich gab auf diese Frage:
Ist es möglich, design NSCell Unterklassen im Interface Builder?
Es ist nicht nur möglich, das design einer UITableViewCell in IB, ist es wünschenswert, da ansonsten alle manuellen Verdrahtung und Platzierung von mehreren Elementen ist sehr mühsam. Performaance ist in Ordnung, solange Sie vorsichtig sind, um alle Elemente deckend, wenn möglich. Die reuseID in IB für die Eigenschaften der UITableViewCell, dann verwenden Sie die passenden Wiederverwendung ID im code, wenn Sie versuchen zu entfernen.
Hörte ich auch von einigen Moderatoren auf der WWDC im vergangenen Jahr, die sollte man nicht machen Tabellenansicht Zellen in IB, aber es ist eine Last von der Liege.
InformationsquelleAutor der Antwort Kendall Helmstetter Gelner
Als iOS circa 4.0, es gibt Besondere Anweisungen in der iOS-docs, die machen diese Arbeit super-schnell:
http://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/TableView_iPhone/TableViewCells/TableViewCells.html#//apple_ref/doc/uid/TP40007451-CH7
Blättern Sie nach unten, wo es spricht über das erstellen von Unterklassen UITableViewCell.
InformationsquelleAutor der Antwort Ben Mosher
Hier ist eine weitere option:
InformationsquelleAutor der Antwort JDL
Erstelle ich meine eigene view-Zellen in einer ähnlichen Weise - es sei denn, ich verbinden die Zelle über ein IBOutlet.
Den
[nib objectAt...]
Ansatz ist anfällig für Veränderungen der Positionen der Elemente im array.Den
UIViewController
Ansatz ist gut - habe es gerade ausprobiert, und es funktioniert schön genug.ABER...
In allen Fällen die
initWithStyle
Konstruktor wird NICHT aufgerufen, so dass keine default-Initialisierung erfolgt ist.Habe ich gelesen, die verschiedene Orten über die Verwendung von
initWithCoder
oderawakeFromNib
aber keine schlüssigen Beweise dafür, dass entweder dieser ist der richtige Weg.Abgesehen von explizit aufrufen einige Initialisierungs-Methode in der
cellForRowAtIndexPath
Methode habe ich nicht gefunden, eine Antwort auf diese noch.InformationsquelleAutor der Antwort sww
Einer Weile fand ich einen großen blog-post zu diesem Thema im blog.atebits.comund da begann mit Loren Brichter ABTableViewCell Klasse zu tun, alle meine UITableViewCells.
Dass Sie am Ende mit einem einfachen container UIView, um alle Ihre widgets und scrollen geht blitzschnell.
Hoffe, dass dies nützlich ist.
InformationsquelleAutor der Antwort eric
Diese Technik auch funktioniert und nicht um eine funky ivar in Ihrer view-controller für die Speicherverwaltung.
Hier die custom table view Zelle lebt in einer xib mit dem Namen "CustomCell.xib".
InformationsquelleAutor der Antwort Bill Garrison
Louis Methode funktioniert für mich. Dies ist der code den ich zum erstellen der UITableViewCell aus der Feder:
InformationsquelleAutor der Antwort ggarber
InformationsquelleAutor der Antwort Mohit
Den gustavogb Lösung bei mir nicht funktioniert, was ich versucht habe ist :
Scheint es zu funktionieren.
Die blogTableViewCell ist das IBOutlet für die Zell-und ChainesController ist der Besitzer der Datei.
InformationsquelleAutor der Antwort groumpf
Aus der UITableView docs bezüglich
dequeueWithReuseIdentifier
: "Eine Zeichenfolge zur Identifizierung der cell-Objekt wiederverwendet werden. Standardmäßig wird eine wiederverwendbare cell identifier ist seiner Klasse name, aber Sie können es ändern, zu jedem beliebigen Wert".Überschreiben -reuseIdentifer selbst ist riskant. Was passiert, wenn Sie zwei Unterklassen Ihrer Zelle Unterklasse, und verwenden Sie diese in einer einzigen Tabelle anzeigen? Wenn Sie senden Sie die reuse-identifier call auf super-du wirst dequeue eine Zelle von der falschen Art.............. Ich denke, Sie außer Kraft setzen müssen reuseIdentifier Methode, aber haben es wieder ein verdrängt-id-Zeichenfolge. Oder, wenn man nicht angegeben wurde, haben Sie wieder die Klasse als string.
InformationsquelleAutor der Antwort SK9
Für was es Wert ist, fragte ich ein iPhone Ingenieur über diese auf einer der iPhone Tech Talks. Seine Antwort war, "ja, es ist möglich, um IB zu erstellen Zellen. Aber nicht. Bitte nicht."
InformationsquelleAutor der Antwort August
Ich folgte der Anweisungen von Apple als verbunden durch Ben Mosher (danke!) fand aber, dass Apple verzichtet ein wichtiger Punkt. Das Objekt, das Sie entwerfen in IB ist nur eine UITableViewCell, wie ist die variable, die Sie laden aus. Aber wenn Sie es als eine benutzerdefinierte Unterklasse von UITableViewCell, und schreiben Sie die code-Dateien für die Unterklasse ist, können Sie schreiben IBOutlet Erklärungen und IBAction-Methoden im code und Draht Sie bis zu Ihrem benutzerdefinierten Elemente, die im IB. Dann gibt es keine Notwendigkeit zu verwenden, anzeigen-tags, um den Zugriff auf diese Elemente und kann jede Art von verrückt Zelle, die Sie wollen. Es ist Cocoa Touch den Himmel.
InformationsquelleAutor der Antwort David Casseres