2016-02-01 16 views
5

Come posso condividere uno xib tra più sottoclassi UITableViewCell?Sottoclassi UITableViewCell multiple che utilizzano lo stesso xib?

Tutti hanno la stessa interfaccia di visualizzazione quindi non voglio dover duplicare lo stesso xib più volte solo per cambiare la classe della cella.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [self.tableView registerNib:[UINib nibWithNibName:@"BaseCell" bundle:[NSBundle mainBundle]] forCellReuseIdentifier:@"BaseCell"]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    BaseCell *baseCell = [tableView dequeueReusableCellWithIdentifier:@"BaseCell" forIndexPath:indexPath]; 

    ... 

Quello che mi serve qui è invece un esempio di mia ChildCell - che è una sottoclasse di BaseCell. Qualche idea?

+0

Cambiare la struttura della classe può essere un approccio migliore. Aggiungere gli stati per la cella e rispondere in base allo stato corrente della cella è un'altra opzione. – meth

risposta

1

Utilizzare la composizione anziché l'ereditarietà. Mantieni la relazione 1-1 tra la tua classe BaseCell e la sua cella nel pennino, aggiungi una proprietà per un oggetto di implementazione che crei e aggiungi all'oggetto cella dopo averlo rimosso dalla coda.

1

Ora non è possibile utilizzare lo stesso xib per più celle.

Ma è possibile separare parte di xib, che utilizzerà tutta la cella.

E in ogni cella si imposta una sottoview a questa sottoview di classe, e ora è possibile riutilizzare questa vista per tutte le celle.

Si può vedere la mia immagine per questo esempio:

prima cella:

enter image description here

seconda cella: enter image description here

E visualizzazione secondaria due impiego delle cellule:

enter image description here

Ora non hai bisogno di duplicare xib e puoi riutilizzare questa parte dell'interfaccia utente.

Problemi correlati