2012-09-13 5 views

Antwort

5
self.view.backgroundColor = TTSTYLEVAR(mainPageBackground); 
self.tableView.separatorColor = TTSTYLEVAR(mainPageBackground); 
self.tableView.backgroundView = nil; 

es Feste für mich. Sie müssen jedoch aufpassen, welche anderen Auswirkungen dies möglicherweise haben könnte.

+0

Wie wirkt sich das auf iOS 5 und iOS 4 aus? – Anand

+0

Ich habe keine gesehen, aber wenn Sie sich nicht sicher sind, können Sie es immer mit etwas blockieren: if ([[[UIDevice currentDevice] systemVersion] floatValue]> = 6.0) – DavidM

+1

Dies passiert immer so lange wie Sie die App bauen von Xcode 4.5. Ich habe ein iOS 5 Projekt und dieses Problem existiert auch. Verwenden von "self.tableView.backgroundView = nil;" behebt das Problem. –

32
[tableViewInstance setBackgroundView: nil]; 
+0

Ja, das hat es für mich behoben. Meine Syntax war: [self.tableView setBackgroundView: nil]; – Phamer

+0

beste Lösung .. +1 –

+0

Bitte beachten Sie, diese Lösung kann Ihnen Probleme in iOS 5 geben (wenn Sie die Anweisung backgroundColor entfernen), weil iOS den Standard-Hintergrund TableView wählen wird. – Farmertjes

3

Ich würde warnen, die Hintergrundansicht zu Null. Nach meiner Erfahrung verursacht dies einen ausgeprägten Rendering-Performance-Treffer während des Benutzers Scrollen unter dem letzten XCode 4.5. Hier war meine Lösung für dieses Problem, die nicht Scrolling Leistung auswirken:

- (void) viewWillLayoutSubviews 
{ 
    CGRect rect = [[UIScreen mainScreen] bounds]; 
    CGRect frame = CGRectMake(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height); 

    UIView *backgroundView = [[[UIView alloc] initWithFrame:frame] autorelease]; 
    backgroundView.backgroundColor = [UIColor clearColor]; 
    self.tableView.backgroundView = backgroundView; 
} 
+0

Das hat bei mir funktioniert. Scheint wie ein guter Weg, um unbeabsichtigte Folgen von einer Null-Hintergrund-Ansicht zu vermeiden. –

+0

Ich würde Ihre backgoundView nicht in viewWillLayoutSubviews einstellen, sondern stattdessen nur einmal in viewDidLoad und eine Autoresizing-Maske verwenden. Die Art und Weise, wie Sie die Hintergrundansicht implementieren, kann zu Leistungsproblemen führen. – Farmertjes

4

Eine weitere einfache Lösung ist die UITableView Hintergrundfarbe in IB zu ändern. Ich habe zum Beispiel zu "White color" gewechselt und es hat wieder funktioniert.

Irgendwie macht die Hintergrundfarbe "Standard" iOS 6 zu stören mit keiner anderen Farbeinstellung im Code gemacht.

+0

Arbeitete wie ein Charme .. einfach & rückwärts kompatibel, danke Sebastian! – dchappelle

19

Einstellung

[tableView setBackgroundView: nil]; 

gibt mir Probleme in iOS 5 so, was ich benutze, ist:

UIView* bview = [[UIView alloc] init]; 
bview.backgroundColor = [UIColor yellowColor]; 
[tableView setBackgroundView:bview]; 

iOS 5 und 6 kompatibel!

+0

Danke, ich habe das gesucht! – SpacyRicochet

+0

Super, arbeitete auch für mich! –

+0

Wenn Sie einen transparenten Hintergrund benötigen, können Sie immer eine klare Farbe verwenden, wenn ich Gelb verwende. – Farmertjes

0

Einstellung der Hintergrund zu Nil macht den Job und ja es wird keine Probleme mit den früheren Versionen haben.

1

in ios 6 das Verfahren zum gruppierten Tabellenansicht dh die Backgroundcolor wurde

[tableview setBackgroundView : nil]; 
1

Ich weiß, das ist markiert als beantwortet bereits verwenden, so stattdessen veraltet aber die folgenden Werke auch:

[[UITableView appearance] setBackgroundColor:[UIColor colorWithRed:233.0/255.0 green:233.0/255.0 blue:233.0/255.0 alpha:1.0]]; 

[[UITableView appearance] setBackgroundView:nil]; 

Auf diese Weise müssen Sie nicht für jede TableView in der App festlegen. Danke an den Autor für den originalen Hinweis!

Verwandte Themen