2012-06-15 16 views
17

Sto riscontrando qualche problema nel tentativo di modificare lo sfondo di un UITableView con i gruppi.Cambia lo sfondo di un UITableView raggruppato

_tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"tableViewBg.png"]]; 

Questo di solito funziona su ogni altro UITableView, ma non quello con i gruppi, c'è qualcos'altro che devo fare? In IB ho il colore di sfondo impostato su un colore chiaro, ma questo non fa molto.

risposta

48

È inoltre necessario disabilitare background vista della _tableView:

[_tableView setBackgroundView:nil]; 
_tableView.backgroundColor = [UIColor redColor]; 

Non c'è bisogno di aggiungere nuovi vista backgroundView. Questo funziona per me in iOS6.

+0

+1 Risposta buona e semplice .. –

+0

grandi periodi salvati. – Ryuk

+0

Genius. Chi sapeva che le intestazioni di sezione raggruppate erano chiare! A prescindere da iOS in cui ci troviamo ora nel 2017, non è necessario eliminare lo sfondo di tableView. L'ho impostato direttamente come bianco e questo è tutto ciò che ha scritto. Grazie per avermi aiutato a risolvere questo problema! –

3

Quello che faccio di solito con UITableViews raggruppate è impostare il colore di sfondo da cancellare e impostare l'immagine del modello nella vista genitori.

self.parentViewController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"tableBG.png"]]; 
self.tableView.backgroundColor = [UIColor clearColor]; 
+1

ho provato anche questo, ma senza successo: self.view.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @ "tableViewBg.png"]]; _tableView.backgroundColor = [UIColor clearColor]; –

+0

Se ricordo bene, UITableView ha uno sfondo a scorrimento. Prova questo .. aggiunto alla mia risposta. –

+0

Hmmm, questo non fa molto, non capisco perché non funzionerà qui, in qualsiasi altro tavolo ho usato lo stesso codice funziona bene –

5

perché non si imposta la tabellaView.backgroundView? è possibile assegnare una vista dell'immagine con l'immagine specificata e passarla alla vista sullo sfondo invece di impostare il colore di sfondo.

+0

Non c'è il tavoloView.backgroundColor per cambiare il colore di sfondo? L'utilizzo di tableView.backgroundView sembra una lunga soluzione alternativa –

+8

In realtà la tua risposta mi ha aiutato, risulta perché si raggruppa un UITableView, viene impostato backgroundView, utilizzando self.tableView.backgroundView = nil; lo rimuovi –

0

Voglio solo aggiungere alla risposta di Nirav - può anche essere fatto usando il proxy di apparizione di iOS 5.

[[UITableView appearance] setBackgroundView:nil]; 
[[UITableView appearance] setBackgroundColor:[UIColor lightGreyColor]]; 

Il vantaggio è che è applicabile a livello globale, in modo da poter raggruppare tutti i tuoi personalizzazioni dell'interfaccia utente in un unico luogo. Tuttavia, si applicherà a tutte le tableview (non solo stile raggruppato).

0
tableView.backgroundView = nil; 
tableView.backgroundColor = [UIColor colorWithPatternImage: xxx]; 
// tableView.backgroundColor = [UIColor redColor]; // is ok 

Se si imposta imposta il backgroundColor come questo, quando si scorre il tableView, la vista backgroundColor scorrerà anche. così, puoi: tableView.backgroundView = nil; self.view.backgroundColor = ...

1

La risposta selezionata funziona ma cancella lo sfondo sia di tableHeaderView che di intestazione della sezione della tabella. Se si desidera solo intestazione della tabella per essere di un certo colore dire bianco e sezione di intestazione ancora da predefinito grigia di quanto non facciano le seguenti -

tableView.tableHeaderView.inputView.backgroundColor = [UIColor whiteColor]; 
Problemi correlati