UITableView, separador de color donde configurar?

162

He añadido un UITableView en IB y configuré el "delegado" y el "origen de datos" y todo funciona bien. Lo que quería hacer a continuación era cambiar el color del separador, pero la única forma en que pude hacer esto fue agregar el método a una de las devoluciones de llamada de delegado, ¿hay un lugar mejor donde debería colocar esto?

No tengo esto en este momento, pero estaba pensando que tal vez necesito agregar un "iVar" desde mi controlador que pueda vincular al UITableViewen IB y luego configurar el color del separador en el viewDidload?

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView setSeparatorColor:[UIColor blackColor]];
    return 65;
}
fuzzygoat
fuente
Agregar la variable y conectarla en IB es como siempre lo he hecho.
s1mm0t
Eso es lo que estaba pensando. Estaba haciendo un tutorial que no usaron e iVar, solo confiaron en las devoluciones de llamadas de delegado y fuente de datos. Sin embargo, nunca accedieron al color del separador, así que tal vez por eso.
fuzzygoat

Respuestas:

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

Espero que eso ayude, necesitarás el self.para acceder, recuerda.

Swift 4.2

tableView.separatorColor = UIColor.red
Helen
fuente
Hola Helen, ¿eso accede sin la necesidad de agregar una propiedad @, parece que sí?
fuzzygoat
1
Esto es verdad. 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 configurarlo en consecuencia. Sin embargo, no puede acceder a la variable de instancia directamente (probablemente algo bueno). La razón por la que puede configurarlo en un método delegado es porque es un parámetro del método llamado.
Helen
2
O si lo desea: self.tableView.separatorColor = UIColor.clearColor;
bbrame
2
No es particularmente parte de la respuesta, pero agregarlo [super viewDidLoad];al fragmento de código sería bueno.
Totocaster
57

Ahora debería poder hacerlo directamente en el IB.

Sin embargo, no estoy seguro de si esto estaba disponible cuando la pregunta se publicó originalmente.

ingrese la descripción de la imagen aquí

Myxtic
fuente
24

Versión rápida :

override func viewDidLoad() {
    super.viewDidLoad()

    // Assign your color to this property, for example here we assign the red color.
    tableView.separatorColor = UIColor.redColor()
}
Rey Mago
fuente
1
Esto me muestra un error 'separatorColor' is unavailableen tvOS.
Banana
12

Pruebe la apariencia + (tipo de instancia) de UITableView:

C objetivo:

[[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.

Nitesh Borad
fuente
3

Si solo desea establecer el mismo color para cada separador y es opaco, puede usar:

 self.tableView.separatorColor = UIColor.redColor()

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

TENGA CUIDADO: debe saber que hay un backgroundView en el separador que tiene un color predeterminado.

Para cambiarlo puedes usar 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 eso ayude!

ezefire
fuente
1
Esto me muestra un error 'separatorColor' is unavailableen tvOS.
Banana
3

Swift 3, xcode versión 8.3.2, storyboard-> elige tu tabla Ver-> inspector-> Separador.

Swift 3, xcode versión 8.3.2

Giang
fuente