Quand layoutSubviews appelée pour personnalisé UITableViewCell?
Quand layoutSubviews
appelée sur un custom UITableViewCell
dans un UITableViewCells
cellForRowAtIndexPath
méthode? Ci-dessous, j'ai besoin de layoutSubviews
d'être appelé, APRÈS j'ai mis le FiltersTableViewCellItem
de la propriété. Puis-je avoir cette réglée correctement? J'aimerais être en mesure d'utiliser layoutSubviews
parce que j'ai entendu c'est mieux pour la performance.
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"FiltersTableViewCell";
FiltersTableViewCell *filtersTableViewCell = [[self dequeueReusableCellWithIdentifier:cellIdentifier] retain];
FiltersTableViewCellItem *filtersTableViewCellItem = [[self.filtersTableViewCellItems objectAtIndex:[indexPath row]] retain];
if (!filtersTableViewCell)
{
filtersTableViewCell = [[FiltersTableViewCell alloc] initWithFiltersTableViewCellItem:filtersTableViewCellItem];
filtersTableViewCell.delegate = self;
}
else
{
filtersTableViewCell.filtersTableViewCellItem = filtersTableViewCellItem;
}
return [filtersTableViewCell autorelease];
}
Lin ARC n'a rien à voir avec des améliorations de performances. En fait, il a le même effet que l'autorelease.
OriginalL'auteur Ser Pounce | 2013-02-01
Vous devez vous connecter pour publier un commentaire.
layoutSubviews
est appelée à un certain point, aprèstableView:willDisplayCell:
, qui est appelé aprèstableView:cellForRowAtIndexPath:
. Vous pouvez vérifier cela en définissant des points d'arrêt dans les méthodes pertinentes et de voir l'ordre dans lequel ils se faire frapper. Par exemple, définissez un point d'arrêt à la fin detableView:cellForRowAtIndexPath:
. Ensuite, ajoutez la méthode suivante àFiltersTableViewCell
et définir un point d'arrêt. Ensuite, exécutez l'application et voir ce qui se passe.
layoutSubviews
est appelée aprèswillDisplayCell
, cela ne signifie pas que la passe de mise en page pour des raisons d'auto-calibrage est terminé. Je trouve que l'auto-dimensionnement de la cellule qui n'est pas rempli jusqu'à ce quewillDisplayCell
ne pas obtenir la bonne hauteur, même si elle oblige également une passe de mise en page en appelantlayoutIfNeeded
. J'ai dû changer mon code à renseigner danscellForRowAtIndexPath
la place pour l'auto-dimensionnement de travail.pouvez-vous me dire comment je peux obtenir la taille de UIButton dans UITableViewCell alors que la cellule est en cours de chargement parce que je veux réduire la taille de UIButton hauteur en fonction du contenu. J'ai fait de Cellule Personnalisé iPhone 8. Pour iPhone 5-je obtenir la taille de UIButton est le même que l'iPhone 8. Merci de m'aider
OriginalL'auteur Timothy Moose
Essayez d'appeler setNeedsLayout après le réglage de votre article.
OriginalL'auteur Sigma4Life
Comme mentionné dans ce réponse ,
il existe de nombreux cas où il sera appelé. Je dirais aussi qu'il pourrait être appelé lorsqu'une réutilisables élément est retiré de la réutilisables cellules de la file d'attente. Essayez de définir le FiltersTableViewCellItem avant de chercher des articles réutilisables.
OriginalL'auteur hishamaus