La domanda è semplice: come si fa a caricare personalizzati UITableViewCelldai file XIB? In questo modo consente di utilizzare Interface Builder per progettare le vostre cellule. La risposta a quanto pare non è semplice a causa di problemi di memoria managment. Questo thread menziona il problema e propone una soluzione, ma è pre NDA-release e manca codice. Ecco un lungo filo che discute la questione senza fornire una risposta definitiva.
Ecco un po 'di codice che ho usato:
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];
}
Per utilizzare questo codice, creare MyCell.m / .h, una nuova sottoclasse di UITableViewCelle aggiungere IBOutletsper i componenti desiderati. Quindi creare un nuovo file Empty XIB. Aprire il file Xib in IB, aggiungere un UITableViewCelloggetto, impostare il suo identificativo per MyCellIdentifier, e impostare questa categoria per MyCell e aggiungere i componenti. Infine, collegare il IBOutletsai componenti. Si noti che non abbiamo impostato proprietario del file in IB.
Altri metodi sostengono l'impostazione del proprietario del file e mettere in guardia di perdite di memoria se il Xib non viene caricato tramite una classe di fabbrica aggiuntivo. Ho testato il sopra in Strumenti / Perdite e ho visto nessun perdite di memoria.
Allora qual è il modo canonico di celle di carico da Xibs? Non abbiamo fissato proprietario del file? Abbiamo bisogno di una fabbrica? Se è così, qual è il codice per la fabbrica di simile? Se ci sono più soluzioni, cerchiamo di chiarire i pro ei contro di ciascuna di esse ...














