2010-07-29 5 views
130

J'ai ajouté un UITableView dans IB et ai mis 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 la seule façon que je pouvais trouver pour faire cela était d'ajouter la méthode à l'un des rappels de délégué, y at-il un meilleur endroit que je devrais mettre cela? Je ne l'ai pas pour le moment mais je pensais que peut-être je dois ajouter un "iVar" de mon contrôleur que je peux lier au UITableView dans IB, puis définir la couleur du séparateur dans le viewDidload?UITableView, Couleur séparateur où définir?

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

Ajout de la variable et le brancher dans IB comment je l'ai toujours fait. – s1mm0t

+0

C'est ce que je pensais. Je faisais un tutoriel qu'ils n'utilisaient pas et iVar, ils se reposaient 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 peut-être que c'est pourquoi. – fuzzygoat

Répondre

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

J'espère que cela - vous aurez besoin du self. pour y accéder, souvenez-vous.

+0

Salut Helen, est-ce que cela l'accède sans avoir besoin d'ajouter un @property, il semble que c'est le cas? – fuzzygoat

+1

Ceci est vrai. Vous sous-classez UITableViewController, qui le déclare comme une 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

+1

Ou si vous le souhaitez: self.tableView.separatorColor = UIColor.clearColor; – bbrame

48

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.

enter image description here

+1

Merci, fonctionne comme un charme en utilisant Xcode 6.1. –

18

Swift Version:

override func viewDidLoad() { 
    super.viewDidLoad() 

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

Cela me montre une erreur '' separatorColor 'est indisponible' sur tvOS. – Banana

2

Si vous voulez juste régler la même couleur pour chaque séparateur et il est opaque, vous pouvez utiliser:

self.tableView.separatorColor = UIColor.redColor() 

Si vous vouloir 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 existe une backgroundView dans le séparateur qui a une couleur par défaut.

Pour le modifier, vous pouvez utiliser cette fonction:

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

Hope it helps!

+1

Cela me montre une erreur «separatorColor» est indisponible »sur tvOS. – Banana

7

Essayez + (instancetype) apparition de 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" 

Note: Le changement reflétera à toutes les tables utilisées dans l'application.

1

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

Swift 3, xcode version 8.3.2

Questions connexes