Cadre de viewForHeaderInSection est toujours la même taille
-
20-09-2019 - |
Question
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
if(section != 0) {
UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(10, 10, 100, 30)] autorelease];
view.backgroundColor = [UIColor redColor];
return view;
} else {
return tableView.tableHeaderView;
}
}
Ceci est ma mise en œuvre de viewForHeaderInSection mais tout cadre que je fais ça me montrant toujours le même cadre rouge. Avez-vous un problème avec mon code?
Image:
Mise à jour:
Hmm maintenant mon bloc rouge est plus élevé, mais mon premier TableHeader est maintenant en quelque sorte caché. Le premier a été mis en œuvre avec le titleForHeaderInSection. Je pensais que je mettre en œuvre la hauteur juste de la hauteur de TableHeader mais que le travail ne marche pas
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
if(section == 1)
return 30;
else
return tableView.tableHeaderView.frame.size.height;
}
La solution
Vous devez mettre en œuvre cette méthode déléguée
- (CGFloat)tableView:(UITableView *)tableView
heightForHeaderInSection:(NSInteger)section;
Dans votre cas, vous pouvez simplement return 30;
.
En outre, vous view
une fuite de!
Votre [view release]
se produit après la return
. Mais dès que le return
arrive l'exécution méthode est annulée et votre release
est jamais appelé.
Vous voulez que ce lieu
UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(10, 10, 100, 30)] autorelease];
Et se débarrasser de la release
explicite en bas.