UITableView, colore del separatore dove impostare?


162

Ho aggiunto a UITableViewin IB e impostato "delegato" e "origine dati" e tutto funziona bene. Quello che volevo fare dopo era cambiare il colore del separatore, ma l'unico modo in cui riuscivo a trovarlo era quello di aggiungere il metodo a uno dei callback delegati, c'è un posto migliore dove metterlo?

Non ho questo al momento, ma stavo pensando che forse avrei bisogno di aggiungere un "iVar" dal mio controller che posso collegare a UITableViewin IB e quindi impostare il colore del separatore in viewDidload?

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

Aggiungere la variabile e collegarla in IB è come l'ho sempre fatto.
s1mm0t,

Questo è quello che stavo pensando. Stavo facendo un tutorial che non usavano e iVar, si basavano solo sui callback dei delegati e dell'origine dati. Tuttavia non hanno mai avuto accesso al colore del separatore, quindi forse è per questo.
fuzzygoat,

Risposte:


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

Spero che sia di aiuto - ti servirà self.per accedervi, ricorda.

Rapido 4.2

tableView.separatorColor = UIColor.red

Ciao Helen, accede ad esso senza la necessità di aggiungere un @property, sembra che lo faccia?
fuzzygoat,

1
Questo è vero. Stai eseguendo la sottoclasse di UITableViewController, che lo dichiara come una proprietà. Quindi eredita i metodi accessor / setter della superclasse, quindi puoi 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 per il metodo chiamato.
Helen,

2
O se ti piace: self.tableView.separatorColor = UIColor.clearColor;
bbrame,

2
Non particolarmente parte della risposta, ma aggiungere [super viewDidLoad];allo snippet di codice sarebbe utile.
totocaster,

57

Ora dovresti essere in grado di farlo direttamente in IB.

Non sono sicuro, tuttavia, se questo era disponibile quando la domanda era stata pubblicata originariamente.

inserisci qui la descrizione dell'immagine


24

Versione rapida :

override func viewDidLoad() {
    super.viewDidLoad()

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

1
Questo mi mostra un errore 'separatorColor' is unavailablesu tvOS.
Banana,

12

Prova l' aspetto + (instancetype) 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.


3

Se vuoi solo impostare lo stesso colore su ogni separatore ed è opaco puoi usare:

 self.tableView.separatorColor = UIColor.redColor()

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

ATTENZIONE: devi sapere che c'è un backgroundView nel separatore che ha un colore predefinito.

Per cambiarlo puoi usare queste funzioni:

    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
        }
    }

Spero che sia d'aiuto!


1
Questo mi mostra un errore 'separatorColor' is unavailablesu tvOS.
Banana,

3

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

Swift 3, xcode versione 8.3.2

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.