Je crée une classe de cellule personnalisée dans laquelle je place différents types de sous-vues dans ma méthode init mais avec un cadre tel que CGRectZero.Implémentation de plusieurs types UITableViewCell
self.subTitleLabel = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease];[self.contentView addSubview:self.subTitleLabel];
self.scannedProductLabel = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease];
[self.contentView addSubview:self.scannedProductLabel];
self.requestStatusLabel = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease];
[self.contentView addSubview:self.requestStatusLabel];
Dans ma méthode layoutSubviews, j'utilise ces étiquettes en fonction de mes besoins. Par exemple, pour un type de cellule, j'utiliserai la première étiquette et pour un autre type, j'utiliserai une autre étiquette.
if ([self.cellType isEqualToString:@"CustomerDetails"]) {
//self.productImageView.frame = CGRectMake(aContentRect.origin.x + kCellOffset, 0.0f, aTitleCellWidth , floorf(aHeight/4));
self.titleLabel.frame = CGRectMake(aContentRect.origin.x + kCellOffset, 0.0f, aTitleCellWidth , floorf(aHeight/2));
self.subTitleLabel.frame = CGRectMake(aContentRect.origin.x + kCellOffset, floorf(aHeight/2), aTitleCellWidth, floorf(aHeight/4));
self.requestStatusLabel.frame = CGRectMake(aContentRect.origin.x + kCellOffset, floorf((aHeight/2) + (aHeight/4)), aTitleCellWidth , floorf(aHeight/4));
}
Ma question est que c'est une bonne idée de le faire du point de vue de la mémoire. Comme si mon but est résolu mais mon objet de cellule personnalisée contient des sous-vues qui sont dans la mémoire mais pas visibles. Si oui, alors quelle est l'approche alternative pour ce genre de scénario.
Cela semble parfait. Merci. – Abhinav