personnalisé créé UITableViewCell - Puis-je lier la conception jusqu'à un fichier XIB?
-
14-10-2019 - |
Question
J'ai une classe personnalisée qui hérite de UITableViewCell. Je sais comment dynamiquement ajouter des éléments à la cellule personnalisée en utilisant layoutSubviews, mais j'ai une cellule assez complexe que je voudrais concevoir de l'Interface Builder et un fichier XIB.
Est-il possible de le faire? Si c'est le cas, comment? Gardez à l'esprit, je suis très nouveau à XCode donc plus de détails vous fournir le meilleur. :)
Merci d'avance pour l'aide.
La solution
Dans votre sous-classe UITableViewController, ajoutez un IBOutlet pour votre classe de cellules personnalisées:
@property(nonatomic,retain)IBOutlet UITableViewCell *customCell;
Ensuite, dans votre cellule xib personnalisé, ensemble propriétaire de fichier à votre sous-classe UITableViewController et affecter la vue extérieure du IBOutlet sur le propriétaire du fichier. Pour chaque sous-vue que vous souhaitez accéder par programmation, attribuer une valeur unique à sa propriété tag
. Disons que votre cellule personnalisée a 3 étiquettes, que vous avez taguées 1, 2 et 3.
Enfin, dans votre méthode de cellForRowAtIndexPath
, chargez la pointe dans la prise en utilisant la méthode de loadNibNamed
. Voir la API docs pour un explication de la façon dont cela fonctionne.
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
// assuming nib is MyCustomCell.xib
[[NSBundle mainBundle] loadNibNamed:@"MyCustomCell" owner:self options:nil];
// assign IBOutlet to cell
cell = customCell;
// clear IBOutlet
self.customCell = nil;
}
Vous pouvez maintenant accéder aux vues tagué dans votre cellule personnalisée en utilisant la méthode viewWithTag
sur ton portable:
UILabel *label1 = (UILabel *)[cell viewWithTag:1];
label1.text = @"foo";
UILabel *label2 = (UILabel *)[cell viewWithTag:2];
label2.text = @"bar";
UILabel *label3 = (UILabel *)[cell viewWithTag:3];
label3.text = @"baz";