Telaio di viewForHeaderInSection è sempre la stessa dimensione
-
20-09-2019 - |
Domanda
- (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;
}
}
Questa è la mia implementazione di viewForHeaderInSection ma qualunque telaio mi rendono sempre mi mostra la stessa cornice rossa. Vede qualche problema con il mio codice?
Immagine:
UPDATE:
Mhm ora il mio blocco rosso è più alto, ma il mio primo tableHeader è ora in qualche modo nascosto. Il primo è stato realizzato con il titleForHeaderInSection. Pensavo solo a implementare l'altezza dell'altezza tableHeader ma quello non funziona
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
if(section == 1)
return 30;
else
return tableView.tableHeaderView.frame.size.height;
}
Soluzione
È necessario implementare questo metodo delegato
- (CGFloat)tableView:(UITableView *)tableView
heightForHeaderInSection:(NSInteger)section;
Nel tuo caso, si può semplicemente return 30;
.
Inoltre, si sono perdite view
!
Il tuo [view release]
succede dopo l'return
. Ma non appena il return
accade il metodo di esecuzione viene interrotta e il vostro release
non viene mai chiamato.
Quindi, si desidera che questo posto
UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(10, 10, 100, 30)] autorelease];
E sbarazzarsi del release
esplicita in basso.