Spørsmålet er enkelt: Hvordan du laster tilpassede trenger UITableViewCellfra XIB filer? Gjør du det kan du bruke Interface Builder til å designe dine celler. Svaret tilsynelatende er ikke enkelt på grunn av minnehåndtering problemer. Denne tråden nevner problemet og foreslår en løsning, men er forhånds NDA-frigivelse og mangler kode. Her er en lang tråd som diskuterer spørsmålet uten å gi et endelig svar.
Her er noen kode jeg har brukt:
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];
}
For å bruke denne koden, lage MyCell.m / .h, en ny underklasse av UITableViewCellog legge IBOutletstil komponentene du vil. Deretter oppretter du en ny Empty XIB fil. Åpne XIB filen i IB, legge til et UITableViewCellobjekt, setter sin identifikator til MyCellIdentifier, og sette sin klasse MyCell og legge til komponenter. Til slutt, koble IBOutletstil komponentene. Merk at vi ikke satt filas eier i IB.
Andre metoder argumentere sette filens eier og advarer mot minnelekkasjer hvis XIB ikke er lastet via en ekstra fabrikk klasse. Jeg testet ovenfor under instrument / Lekkasjer og så ingen minnelekkasjer.
Så hva er den kanoniske måten å laste celler fra Xibs? Har vi satt filens eier? Trenger vi en fabrikk? Hvis ja, hva er koden for fabrikken ser ut? Hvis det finnes flere løsninger, la oss klargjøre fordeler og ulemper med hver av dem ...














