2010-03-15 6 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; 
} 

}Rahmen von viewForHeaderInSection ist immer die gleiche Größe

Dies ist meine Implementierung von viewForHeaderInSection aber egal Rahmen Ich mache es mir immer den gleichen roten Rahmen zeigt. Siehst du irgendein Problem mit meinem Code?

Image:

enter image description here

UPDATE:

Mhm jetzt mein roter Block ist höher, aber mein erster Tableheader ist jetzt irgendwie versteckt. Der erste wurde mit dem titleForHeaderInSection implementiert. Ich dachte, ich nur die Höhe der Tableheader Höhe umzusetzen, sondern dass nicht funktioniert

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { 
if(section == 1) 
    return 30; 
else 
    return tableView.tableHeaderView.frame.size.height; 
} 

Antwort

40

Sie benötigen diese Delegatmethode

- (CGFloat)tableView:(UITableView *)tableView 
heightForHeaderInSection:(NSInteger)section; 

In Ihrem Fall zu implementieren, können Sie einfach return 30;.


Auch Sie view sind undicht!

Ihre [view release] passiert nach der return. Aber sobald die return passiert, wird die Methodenausführung abgebrochen und Ihr release wird nie aufgerufen.

So wollen Sie diese stattdessen

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

Und unten der expliziten release loszuwerden.

+0

thx, weißt du warum sie nicht rame höhe nehmen? nicht sehen, warum ich die Höhe in einer zusätzlichen Delegiertenmethode einstellen muss ... – gabac

+0

Ich weiß nicht, warum Apple es so gemacht hat. Es ist ein bisschen dumm. Aber ich denke, sie wollten den Header-Frame * immer * über die gesamte Breite der Tabellenansicht erstrecken. Die einzige Größe, mit der man sich herumschlagen kann, ist die Höhe. –

+0

thx über den Hinweis der Autorelease. Aber jetzt habe ich ein anderes Problem, vielleicht kannst du mir ein anderes Mal helfen? – gabac

Verwandte Themen