¿alguien puede explicar por qué debería usar viewWithTag
para obtener subvistas (por ejemplo, UILabel
, etc.) desde una celda en dequeueReusableCellWithIdentifier
?¿Por qué usar "viewWithTag" con "dequeueReusableCellWithIdentifier"?
Alguna información de fondo: Tengo un UITableViewCell
personalizado con un par de UILabel
s en él (he reproducido una versión simple de esto a continuación). Estas etiquetas se definen en el archivo NIB asociado y se declaran con IBOutlet
sy se vuelven a vincular a la clase de controlador de la celda personalizada. En el tableview de dequeueReusableCellWithIdentifier
, estoy haciendo esto:
CustomCell *customCell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:@"CustomCellId"];
if (customCell == nil) {
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"customCell" owner:self options:nil];
for (id oneObject in nib)
if ([oneObject isKindOfClass:[CustomCell class]])
customCell = (CustomCell *)oneObject;
}
customCell.firstLabel.text = @"Hello";
customCell.secondLabel.text = @"World!";
return customCell;
Todo funciona bien. Sin embargo a partir de los tutoriales que he visto, parece que al cambiar los valores de las etiquetas que debería estar haciendo esto en su lugar:
UILabel *firstLabel = (UILabel *)[customCell.contentView viewWithTag:555];
firstLabel.text = @"Hello";
UILabel *secondLabel = (UILabel *)[customCell.contentView viewWithTag:556];
secondLabel.text = @"World!";
(de las etiquetas valores de las variables se han establecido en el NIB).
¿Puede alguien decirme qué método prefiere y por qué?
Gracias!
Normalmente debe usar una subclase UITableViewCell sobre el método viewWithTag rápido y sucio. –