De vraag is simpel: Hoe maak je aangepaste laden UITableViewCellvan Xib-bestanden? Hierdoor kunt u Interface Builder gebruiken om uw cellen. Het antwoord is blijkbaar niet eenvoudig te wijten aan geheugenbeheer problemen. Deze draad vermeldt het probleem en stelt een oplossing, maar pre-NDA afgifte en mist code. Hier is een lange draad dat de kwestie bespreekt zonder een definitief antwoord.
Hier is een code die ik heb gebruikt:
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];
}
Om deze code te gebruiken, maakt MyCell.m / .h, een nieuwe subklasse van UITableViewCellen toe te voegen IBOutletsvoor de onderdelen die u wilt. Maak vervolgens een nieuwe Empty XIB bestand. Open het bestand Xib in IB, voeg een UITableViewCellobject, stel de identifier op MyCellIdentifier, en stel deze klasse mycell en voeg uw componenten. Ten slotte sluit de IBOutletsaan de componenten. Merk op dat we het bestand eigenaar in IB heeft ingesteld.
Andere methoden pleiten voor het instellen van het bestand Eigenaar en waarschuwen voor geheugenlekken als de Xib niet via een extra fabriek klasse wordt geladen. Ik testte de hierboven onder Instruments / morsen en zagen geen geheugenlekken.
Dus wat is de canonieke manier om cellen van Xibs laden? Hebben we stellen Bestand van de eigenaar? Hebben we een fabriek nodig? Zo ja, wat is de code voor de fabriek eruit? Als er meerdere oplossingen, laten we verduidelijken de voors en tegens van elk van hen ...














