Die Frage ist einfach: Wie Sie benutzerdefiniertes laden UITableViewCellvon Xib Dateien? Dadurch können Sie Interface Builder verwenden , um Ihre Zellen zu entwerfen. Die Antwort ist offensichtlich nicht einfach aufgrund Speicherverwaltung Fragen. Dieser Thread erwähnt das Problem und schlägt eine Lösung vor , sondern ist vor NDA-Release und es fehlt Code. Hier ist ein langer Faden , der das Problem diskutiert , ohne eine definitive Antwort zu geben.
Hier einige Code, den ich verwendet habe:
static NSString *CellIdentifier = @MyCellIdentifier;
MyCell *cell = (MyCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
cell = (MyCell *)[nib objectAtIndex:0];
}
Um diesen Code zu verwenden, erstellen MyCell.m / .h, eine neue Unterklasse von UITableViewCellund fügen Sie IBOutletsfür die Komponenten , die Sie wollen. Dann erstellen Sie eine neue „Empty XIB“ -Datei. Öffnen Sie die Datei in Xib IB, fügen Sie ein UITableViewCellObjekt, legen Sie die Kennung „MyCellIdentifier“, und legen Sie seine Klasse MyCell und fügen Sie Ihre Komponenten. Schließlich verbindet die IBOutletszu den Komponenten. Beachten Sie, dass wir die Datei Besitzer in IB nicht festgelegt haben.
Andere Methoden befürworten die Datei Besitzer Einstellung und warnen vor Speicherlecks, wenn der Xib nicht über eine zusätzliche Fabrik Klasse geladen wird. Getestet habe ich die oben unter Instrumenten / Leaks und sah keine Speicherlecks.
Also, was ist der üblicher Weg, Zellen aus Xibs zu laden? Setzen wir Datei-Besitzer? Haben wir eine Fabrik benötigen? Wenn ja, was ist der Code für die wie Fabrik aussehen? Wenn es mehrere Lösungen gibt, lassen Sie uns die Vor- und Nachteile eines jeden von ihnen klären ...














