UITableView, couleur de séparateur où définir?

162

J'ai ajouté un UITableViewdans IB et défini le "délégué" et la "source de données" et tout fonctionne bien. Ce que je voulais faire ensuite était de changer la couleur du séparateur, mais le seul moyen que je pouvais trouver pour le faire était d'ajouter la méthode à l'un des rappels de délégué, y a-t-il un meilleur endroit où je devrais mettre cela?

Je n'ai pas cela pour le moment, mais je pensais que je devais peut-être ajouter un "iVar" de mon contrôleur que je peux lier au UITableViewdans IB, puis définir la couleur du séparateur dans le viewDidload?

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView setSeparatorColor:[UIColor blackColor]];
    return 65;
}
fuzzygoat
la source
Ajouter la variable et la brancher dans IB est la façon dont je l'ai toujours fait.
s1mm0t
C'est ce que je pensais. Je faisais un tutoriel qu'ils n'ont pas utilisé et iVar, ils se sont simplement appuyés sur les rappels de délégué et de source de données. Cependant, ils n'ont jamais accédé à la couleur du séparateur, alors c'est peut-être pourquoi.
fuzzygoat du

Réponses:

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

J'espère que cela vous aidera - vous en aurez besoin self.pour y accéder, rappelez-vous.

Swift 4.2

tableView.separatorColor = UIColor.red
Hélène
la source
Salut Helen, est-ce que cela y accède sans avoir besoin d'ajouter une propriété @, ça ressemble à ça?
fuzzygoat le
1
C'est vrai. Vous sous-classez UITableViewController, qui le déclare comme propriété. Il hérite donc des méthodes accesseur / setter de la superclasse, vous pouvez donc le définir en conséquence. Cependant, vous ne pouvez pas accéder directement à la variable d'instance (probablement une bonne chose). La raison pour laquelle vous pouvez le définir dans une méthode déléguée est qu'il s'agit d'un paramètre de la méthode appelée.
Helen le
2
Ou si vous aimez: self.tableView.separatorColor = UIColor.clearColor;
bbrame
2
Cela ne fait pas particulièrement partie de la réponse, mais ajouter [super viewDidLoad];à l'extrait de code serait bien.
totocaster
57

Vous devriez maintenant pouvoir le faire directement dans l'IB.

Je ne sais pas si cela était disponible lorsque la question a été publiée à l'origine.

entrez la description de l'image ici

Myxtic
la source
24

Version Swift :

override func viewDidLoad() {
    super.viewDidLoad()

    // Assign your color to this property, for example here we assign the red color.
    tableView.separatorColor = UIColor.redColor()
}
Roi-sorcier
la source
1
Cela me montre une erreur 'separatorColor' is unavailablesur tvOS.
Banane
12

Try + (instancetype) apparence de UITableView:

Objectif 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"

Remarque: le changement s'appliquera à toutes les tables utilisées dans l'application.

Nitesh Borad
la source
3

Si vous souhaitez simplement définir la même couleur pour chaque séparateur et qu'il est opaque, vous pouvez utiliser:

 self.tableView.separatorColor = UIColor.redColor()

Si vous souhaitez utiliser des couleurs différentes pour les séparateurs ou effacer la couleur du séparateur ou utiliser une couleur avec alpha.

ATTENTION: vous devez savoir qu'il y a un backgroundView dans le séparateur qui a une couleur par défaut.

Pour le changer, vous pouvez utiliser ces fonctions:

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

J'espère que ça aide!

Ezefire
la source
1
Cela me montre une erreur 'separatorColor' is unavailablesur tvOS.
Banane
3

Swift 3, xcode version 8.3.2, storyboard-> choisissez votre tableau View-> inspector-> Separator.

Swift 3, version 8.3.2 de xcode

Giang
la source