2016-02-01 4 views
5

Wie kann ich eine xib unter mehreren UITableViewCell Unterklassen teilen?Mehrere UITableViewCell-Unterklassen mit der gleichen XIB?

Sie alle haben die gleiche Ansicht Schnittstelle, so dass ich nicht die gleiche xib mehrfach duplizieren muss, nur um die Zellklasse zu ändern.

- (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]; 

    ... 

Was ich brauche hier stattdessen eine Instanz meiner ChildCell - was eine Unterklasse von BaseCell ist. Irgendwelche Ideen?

+0

Ändern der Struktur der Klasse kann besser Ansatz sein. Das Hinzufügen von Zuständen für die Zelle und das Antworten gemäß dem aktuellen Zustand der Zelle ist eine weitere Option. – meth

Antwort

1

Verwenden Sie die Komposition und nicht die Vererbung. Behalten Sie die 1-1-Beziehung zwischen Ihrer BaseCell-Klasse und ihrer Zelle in der Schreibfeder bei, fügen Sie eine Eigenschaft für ein Implementierungsobjekt hinzu, das Sie erstellen und dem Zellenobjekt hinzufügen, nachdem Sie die Warteschlange entfernt haben.

1

Jetzt keine Möglichkeit zur Verwendung desselben xib für mehrere Zellen.

Aber Sie können einen Teil von xib trennen, die die ganze Zelle verwenden wird.

Und in jeder Zelle werden Sie eine Unteransicht für diese Untersicht Klasse festlegen, und jetzt können Sie diese Ansicht für alle Zellen wiederverwenden.

Sie können mein Bild für dieses Beispiel sehen:

Erste Zelle:

enter image description here

Zweite Cell: enter image description here

Und subview zwei Zell Verwendung:

enter image description here

Jetzt brauchen Sie keine doppelte XIB und können diesen Teil der Benutzeroberfläche wiederverwenden.

Verwandte Themen