2010-03-15 15 views
17
- (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; 
} 

}Frame di viewForHeaderInSection è sempre la stessa dimensione

Questa è la mia implementazione di viewForHeaderInSection ma qualunque fotogramma lo faccio sempre mi mostra la stessa cornice rossa. Vedi qualche problema con il mio codice?

Image:

enter image description here

UPDATE:

Mhm ora il mio blocco rosso è superiore ma il mio primo tableHeader è ora in qualche modo nascosto. Il primo è stato implementato con 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; 
} 

risposta

40

È 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 numero [view release] si verifica dopo lo return. Ma non appena si verifica return, l'esecuzione del metodo viene interrotta e il tuo release non viene mai chiamato.

Così si desidera che questo invece

UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(10, 10, 100, 30)] autorelease]; 

e di sbarazzarsi del esplicito release basso.

+0

thx, sai perché non prendono altezza di rame? non vedo perché devo impostare l'altezza in un metodo extra delegato ... – gabac

+0

Non so perché Apple l'abbia fatto in questo modo. È un po 'sciocco. Ma penso che abbiano inteso il frame dell'intestazione * sempre * sull'intera larghezza della vista tabella. Quindi l'unica variabile di dimensione che rimane da risolvere è l'altezza. –

+0

thx circa il suggerimento dell'autelease. Ma ora ho un altro problema, forse puoi aiutarmi un'altra volta? – gabac

Problemi correlati