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:

eingeben Bild Beschreibung hier

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;
}
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top