J'ai une sous-classe UIView personnalisée que j'essaie d'utiliser comme en-tête pour une de mes sections groupées de vue de table. J'enregistre une instance de cette vue dans tableViewController et l'utilise pour retourner la hauteur de la section d'en-tête ainsi que la vue elle-même. le problème est qu'en quelque sorte cette variable d'instance passe d'un UIView à un CALayer au milieu d'un appel reloadData qui provoque un crash, puisque l'instance a une méthode spéciale pour retourner sa hauteur attendue. ceci est le code qui se bloque:Les vues d'en-tête de section UITableView personnalisées se brisent
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if (section == 0)
{
return [self.dataHeader frameHeight];
}
return 0.0f;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
if (section == 0)
{
return self.dataHeader;
}
return nil;
}
je définir un point d'arrêt sur le premier retour dans le bloc si la méthode de heightForHeaderInSection, et il frappe 4 fois; les trois premiers retournent le dataHeader avec succès, tandis que la quatrième fois montre qu'il s'agit d'une CALayer et se bloque avec une exception doesNotRecognizeSelector (ma vue de table a deux sections si cela fait une différence). Y a-t-il une raison pour que cela se produise, et y a-t-il un moyen de l'arrêter?
Vous avez raison; c'était un problème. En fait, j'avais laissé une autorelease là d'un refactor. Je vais l'essayer demain quand j'aurai l'occasion de voir si ça le répare :). – Kevlar