2010-07-29 16 views
130

Ho aggiunto uno UITableView in IB e ho impostato "delegato" e "origine dati" e tutto funziona correttamente. Quello che volevo fare dopo era cambiare il colore del separatore, ma l'unico modo per trovare questo era aggiungere il metodo a uno dei callback delegati, c'è un posto migliore in cui dovrei metterlo?UITableView, Colore separatore dove impostare?

non ho questo al momento, ma stavo pensando che forse ho bisogno di aggiungere un "iVar" dal mio controller che posso collegare al UITableView in IB e quindi impostare il colore separatore nella viewDidload?

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    [tableView setSeparatorColor:[UIColor blackColor]]; 
    return 65; 
} 
+0

Aggiunta la variabile e agganciandolo in IB è come ho sempre fatto. – s1mm0t

+0

Questo è quello che stavo pensando. Stavo facendo un tutorial che non usavano e iVar, si affidavano solo ai callback dei delegati e delle origini dati. Tuttavia non hanno mai avuto accesso al colore del separatore, quindi forse questo è il motivo. – fuzzygoat

risposta

279
- (void)viewDidLoad 
{ 
    [self.tableView setSeparatorColor:[UIColor myColor]]; 
} 

Mi auguro che aiuta - è necessario il self. per accedervi, ricordare.

+0

Ciao Helen, ti accede senza la necessità di aggiungere una @property, sembra che sia così? – fuzzygoat

+1

Questo è vero. Stai sottoclassi UITableViewController, che lo dichiara come una proprietà. Pertanto eredita i metodi di accesso/settaggio della superclasse, quindi è possibile impostarlo di conseguenza. Tuttavia, non è possibile accedere direttamente alla variabile di istanza (probabilmente una buona cosa). Il motivo per cui è possibile impostarlo in un metodo delegato è perché è un parametro del metodo chiamato. – Helen

+1

Oppure se ti piace: self.tableView.separatorColor = UIColor.clearColor; – bbrame

48

Ora dovresti essere in grado di farlo direttamente nell'IB.

Non sono sicuro, se questo fosse disponibile quando la domanda è stata postata originariamente.

enter image description here

+1

Grazie, funziona come un fascino usando Xcode 6.1. –

18

Swift versione:

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Assign your color to this property, for example here we assign the red color. 
    tableView.separatorColor = UIColor.redColor() 
} 
+0

Questo mi mostra un errore ''separatorColor' non è disponibile 'su tvOS. – Banana

2

Se si desidera solo per impostare lo stesso colore per ogni separatore ed è opaca è possibile utilizzare:

self.tableView.separatorColor = UIColor.redColor() 

Se desidera utilizzare colori diversi per i separatori o deselezionare il colore del separatore o utilizzare un colore con alfa.

ATTENZIONE: è necessario sapere che nel separatore è presente una vista di sfondo con un colore predefinito.

Per modificarlo è possibile utilizzare questa funzione:

func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) { 
     if(view.isKindOfClass(UITableViewHeaderFooterView)){ 
      var headerView = view as! UITableViewHeaderFooterView; 
      headerView.backgroundView?.backgroundColor = myColor 

      //Other colors you can change here 
      // headerView.backgroundColor = myColor 
      // headerView.contentView.backgroundColor = myColor 
     } 
    } 

    func tableView(tableView: UITableView, willDisplayFooterView view: UIView, forSection section: Int) { 
     if(view.isKindOfClass(UITableViewHeaderFooterView)){ 
      var footerView = view as! UITableViewHeaderFooterView; 
      footerView.backgroundView?.backgroundColor = myColor 
      //Other colors you can change here 
      //footerView.backgroundColor = myColor 
      //footerView.contentView.backgroundColor = myColor 
     } 
    } 

Speranza che aiuta!

+1

Questo mi mostra un errore ''separatorColor' non è disponibile su tvOS. – Banana

7

Prova + (instanceType) aspetto di UITableView:

Objective-C:

[[UITableView appearance] setSeparatorColor:[UIColor blackColor]]; // set your desired colour in place of "[UIColor blackColor]" 

Swift 3.0:

UITableView.appearance().separatorColor = UIColor.black // set your desired colour in place of "UIColor.black" 

Nota: la modifica si rifletterà su tutte le tabelle utilizzate nell'applicazione.

1

Swift 3, xcode versione 8.3.2, storyboard-> scegli la tua tabella Visualizza-> ispettore-> Separatore.

Swift 3, xcode version 8.3.2

Problemi correlati