UITableView: benutzerdefinierte Kopfzeile-Ansicht nicht zeigen
Will ich die Anzeige einer Tabelle mit benutzerdefinierten header-Titel.
Die table view
angeschlossen ist, um einen controller class
implementiert, dass das tableview delegate
- und Daten-source-Protokolle, aber keine Unterklasse der UIViewController
denn die Tabelle ist eine Untersicht werden, wie oben dargestellt, ein weiterer tableview.
einige Ausschnitte aus meinem code:
Der tableview ist programmgesteuert erstellt:
_myListView = [[UITableView alloc] initWithFrame:tableFrame style:UITableViewStyleGrouped];
[_myListView setDataSource:self.myListController];
[_myListView setDelegate:self.myListController];
[_myListView setBackgroundColor:darkBackgroundColor];
wo myListController ist eine starke Eigenschaft in der Klasse.
Für die Anzahl der Zeilen in den Abschnitten:
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
…
return count;
}
Die Anzahl der Abschnitte:
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return [someDelegate sectionCount];
}
Für die benutzerdefinierte Kopfzeile Anzeigen:
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView* headerView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, SectionHeaderHeight)];
UILabel* sectionHeaderTitle = [[UILabel alloc] initWithFrame:CGRectMake(20, 3, 300, 24)];
[headerView setBackgroundColor:[UIColor clearColor]];
sectionHeaderTitle.text = [self myTitleForHeaderInSection:section];
sectionHeaderTitle.textColor = [UIColor whiteColor];
sectionHeaderTitle.textAlignment = UITextAlignmentLeft;
[headerView addSubview:sectionHeaderTitle];
return headerView;
}
Für die benutzerdefinierte headerViewHeight (seit iOS5):
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if ( [self tableView:tableView numberOfRowsInSection:section] > 0) {
return SectionHeaderHeight;
} else {
return 0;
}
}
Leider der tableview zeigt keine section-Header ist nur so, wenn ich zurückkehren würde, gleich null.
Jedoch, ich habe mit ein Haltepunkt ist, dass der code tatsächlich gibt ein UIView.
Alles andere funktioniert einwandfrei.
Was bin ich? Bitte, zögern Sie nicht, um mich zu schämen für mein selbst.
schon gemacht, versucht, redColor für beide ohne Erfolg
Ich habe versucht, Ihre 'viewForHeaderInSection' in meinem Projekt. Es funktioniert gut für mich.
InformationsquelleAutor Sascha Kolberg | 2012-08-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich nicht wirklich verstehen, warum Sie wollen, um eine benutzerdefinierte Ansicht, und nicht die "standard"? Sie haben vielleicht Ihre Gründe, aber ich sehe nichts in deinem code sagt mir warum 🙂
Würde ich persönlich nur verwenden:
Sagen Sie mir, wenn das ist nicht, was Sie suchen !
Hauptgründe für mich zu wollen, um die Anzeige von benutzerdefinierten Header dunklen hintergrund in der Tabelle angezeigt und und ich möchte zur Anzeige eines symbols in der Kopfzeile. Aber ich bin nicht dagegen, off-topic Antworten 😉
Funktioniert das "heightForHeaderInSection' die richtigen Werte zurück ? Haben Sie überprüft, die mit einem Haltepunkt ?
yep, ich trat in den if-block und gibt SectionHeaderHeight die definiert ist als 30. Auch sehe ich, dass die Tabelle mit der richtigen Anzahl von Zeilen.
Können Sie versuchen, "[_myListView bringSubviewToFront: headerView];" nach der header-Ansicht erstellt ? Kann nutzlos sein, aber nur, um sicherzustellen, dass es nicht geschickt hinter dem Tisch..
InformationsquelleAutor rdurand
Ich scheine eine Lösung gefunden zu haben:
Habe ich eine lazy loading starke Eigenschaft für jede header-Ansicht, die ich anzeigen möchten. (zum Glück sind es nur drei)
Nun die Ansichten sind gezeigt.
Es scheint, dass die header-Ansichten bekam freigegeben ohne starke Referenzen, bevor die Tabelle gerendert wurde.
Könnte es sein, dass es eine Verbindung zu der Klasse implementieren, die das table view delegate und data-source-Protokolle ist nicht ein UIViewController?
InformationsquelleAutor Sascha Kolberg
Text-Farbe, die Sie ändern, um die Schwarze Farbe und einmal überprüfen.
sectionHeaderTitle.textColor = [UIColor blackColor];
Ich habe Versucht, mit was auch immer code, den Sie gegeben haben. einfach den geänderten text Farbe, es funktioniert gut für mich.
Versuchen Sie geben heightForHeaderInSection als 40 Oder einen beliebigen gültigen Wert.
InformationsquelleAutor Sudha Chandran B.C.
Sie versuchen, diesen code diese Arbeit auf meiner Seite 🙂
InformationsquelleAutor Waseem Shah