Pour la dynamique des cellules, rowHeight
ensemble sur l' UITableView
a toujours la priorité sur les cellules individuelles' rowHeight
.
Ce comportement est, IMO, un bug. À tout moment, vous avez à gérer votre INTERFACE utilisateur en deux endroits, elle est sujette à l'erreur. Par exemple, si vous changez la taille des cellules dans la table de montage, vous devez vous rappeler de les modifier dans l' heightForRowAtIndexPath:
. Jusqu'à ce qu'Apple corrige le bug actuel, la meilleure solution est de remplacer heightForRowAtIndexPath:
, mais utiliser le prototype de cellules à partir de la table de montage séquentiel pour déterminer la hauteur plutôt que d'utiliser des numéros de magie. Voici un exemple:
- (CGFloat)tableView:(UITableView *)tableView
heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
/* In this example, there is a different cell for
the top, middle and bottom rows of the tableView.
Each type of cell has a different height.
self.model contains the data for the tableview
*/
static NSString *CellIdentifier;
if (indexPath.row == 0)
CellIdentifier = @"CellTop";
else if (indexPath.row + 1 == [self.model count] )
CellIdentifier = @"CellBottom";
else
CellIdentifier = @"CellMiddle";
UITableViewCell *cell =
[self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
return cell.bounds.size.height;
}
Cela permettra de s'assurer que toutes les modifications apportées à votre prototype de la hauteur de cellule sera automatiquement repris au moment de l'exécution et que vous n'avez besoin de gérer votre INTERFACE utilisateur en un seul lieu: le storyboard.