2010-07-29 10 views
130

He agregado un UITableView en IB y configuré el "delegado" y el "origen de datos" y todo está funcionando bien. Lo que quería hacer a continuación era cambiar el color del separador, pero la única forma que podía encontrar para hacerlo era agregar el método a una de las devoluciones de llamadas de los delegados, ¿hay un lugar mejor en el que debería poner esto?UITableView, ¿Separador de color dónde establecer?

No tengo esto por el momento, pero estaba pensando que tal vez tengo que agregar un "iVar" de mi controlador que puedo vincular al UITableView en IB y luego establecer el color del separador en el viewDidload?

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

Adición de la variable y conectarlo en el IB es como siempre he hecho. – s1mm0t

+0

Eso es lo que estaba pensando. Estaba haciendo un tutorial que no usaron e iVar, solo confiaron en las devoluciones de llamadas de los delegados y las fuentes de datos. Sin embargo, nunca accedieron al color del separador, así que tal vez por eso. – fuzzygoat

Respuesta

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

Yo espero que ayude - se necesita el self. para acceder a ella, recuerda.

+0

Hola Helen, ¿tiene acceso eso sin la necesidad de agregar una @propiedad, parece que sí? – fuzzygoat

+1

Esto es cierto. Está subclasificando UITableViewController, que lo declara como una propiedad. Por lo tanto, hereda los métodos de acceso/establecimiento de la superclase, por lo que puede establecerlo en consecuencia. Sin embargo, no puede acceder directamente a la variable de instancia (probablemente sea algo bueno). La razón por la que puede establecerlo en un método delegado es porque es un parámetro del método llamado. – Helen

+1

O si lo desea: self.tableView.separatorColor = UIColor.clearColor; – bbrame

48

Ahora debería poder hacerlo directamente en el IB.

No estoy seguro, si esto estaba disponible cuando la pregunta se publicó originalmente.

enter image description here

+1

Gracias, funciona como un encanto usando Xcode 6.1. –

18

Swift versión:

override func viewDidLoad() { 
    super.viewDidLoad() 

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

Esto me muestra un error ''separatorColor' no está disponible' en tvOS. – Banana

2

Si lo que desea es establecer el mismo color para cada separador y es opaco que puede utilizar:

self.tableView.separatorColor = UIColor.redColor() 

Si desea utilizar diferentes colores para los separadores o borrar el color del separador o usar un color con alfa.

TENGA EN CUENTA: Debe saber que hay una vista de fondo en el separador que tiene un color predeterminado.

para cambiarlo puede utilizar estas funciones:

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

espero que ayude!

+1

Esto me muestra un error ''separatorColor' no está disponible' en tvOS. – Banana

7

Trate + (instanceType) apariencia de UITableView:

Objetivo-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: El cambio se reflejará en todas las tablas utilizadas en la aplicación.

1

Swift 3, xcode versión 8.3.2, guión gráfico-> elija su tabla Vista-> inspector-> Separador.

Swift 3, xcode version 8.3.2

Cuestiones relacionadas