Frame of viewForHeaderInSection ist immer die gleiche Größe
-
20-09-2019 - |
Frage
- (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;
}
}
Dies ist meine Implementierung von viewForHeaderInSection aber egal Rahmen Ich mache es sich immer zeigt mir den gleichen roten Rahmen. Sehen Sie irgendein Problem mit meinem Code?
Bild:
UPDATE:
Mhm jetzt mein roter Block ist höher, aber mein erster Tableheader ist jetzt irgendwie versteckt. Die erste wurde mit dem titleForHeaderInSection umgesetzt. Ich dachte, ich nur die Höhe der Tableheader Höhe implementieren, aber das funktioniert nicht
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
if(section == 1)
return 30;
else
return tableView.tableHeaderView.frame.size.height;
}
Lösung
Sie müssen diese Delegatmethode implementieren
- (CGFloat)tableView:(UITableView *)tableView
heightForHeaderInSection:(NSInteger)section;
In Ihrem Fall können Sie einfach return 30;
.
Auch Sie sind undicht view
!
Ihre [view release]
passiert nach dem return
. Aber sobald die return
des Verfahrens geschieht die Ausführung abgebrochen und Ihre release
nie aufgerufen wird.
Sie wollen also diese stattdessen
UIView *view = [[[UIView alloc] initWithFrame:CGRectMake(10, 10, 100, 30)] autorelease];
Und loszuwerden des expliziten release
unten.