personnalisé créé UITableViewCell - Puis-je lier la conception jusqu'à un fichier XIB?

StackOverflow https://stackoverflow.com/questions/4556646

  •  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.

Était-ce utile?

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";
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top