2012-01-06 24 views
26

Quiero hacer algo similar a la página de configuración de WiFi: cuando toca la celda de la tabla, ponga una casilla en el lado izquierdo de la celda y tenga una vista de accesorio del botón de divulgación en el derecho a mostrar más detalles.Poner marca de verificación en el lado izquierdo de UITableViewCell

Mi pregunta: ¿hay alguna manera de poner la marca de verificación en el lado izquierdo de una UITableViewCell sin construir una UITableViewCell personalizada?

+1

La respuesta a su pregunta es: "No". – EmptyStack

Respuesta

120

¡La respuesta es SÍ! No tiene que crear una celda personalizada para eso o agregar vistas de imagen. Para simular casillas de verificación, solo debe anteponer un símbolo de Unicode para un estado de casilla de verificación al texto de la celda.

Los símbolos Unicode que estoy usando para casillas de verificación son \u2705 para comprobado y \u2B1C para marcar (casi el mismo que \U0001F533 en IOS 5). iOS rinde varios unicode symbols as icons.

Éstos son algunos otros símbolos:

enter image description here

@"\u2611", @"\u2B1C", @"\u2705", @"\u26AB", @"\u26AA", @"\u2714", @"\U0001F44D", @"\U0001F44E" 

Imitando a la página de configuración de Wi-Fi (con UITableViewCellStyleValue1):

enter image description here

cell.textLabel.text = @"\u2001 Wi-Fi 1"; 
cell.detailTextLabel.text = @"\U0001F512 \u268A"; 

cell.textLabel.text = @"\u2001 Wi-Fi 2"; 
cell.detailTextLabel.text = @"\U0001F512 \u268C"; 

cell.textLabel.text = @"\u2713 Wi-Fi 3"; 
cell.detailTextLabel.text = @"\U0001F513 \u2630"; 
+0

Estoy viendo la primera publicación donde uno es la respuesta perfecta y el resto tiene votos bajos ... –

+1

Por cierto, en Swift, necesita usar llaves para caracteres Unicode: "\ u {2713} " –

+0

¿Qué pasa con el cambio de selección y tengo el origen de datos? ¿Debo leer el origen de datos cada vez para que la selección se agregue y DEponga la marca de verificación? No puedo usar detailtextlabel porque ese que estoy usando para mostrar otra información ... –

-2

No. Tiene que crear una celda personalizada para eso.

+2

Es posible sin una celda personalizada. –

-4

Debería mirar el UITableViewCell reference and Table View Guide. Use el estilo de celda estándar con la propiedad editingAccessoryType establecida en UITableViewCellAccessoryCheckmark.

+1

También puede usar una vista personalizada –

+6

De acuerdo con la documentación: UITableViewCellAccessoryCheckmark La celda tiene una marca de verificación en el lado derecho. La pregunta pregunta para tenerlo en el lado izquierdo – akshay1188

6

por supuesto se puede hacer eso :) Por ejemplo utilizar UITableViewCellStyle

UITableViewCellStyleDefault, 
// Simple cell with text label and optional image view 
//(behavior of UITableViewCell in iPhoneOS 2.x) 

... y poner una imagen personalizada "marca" en el que "vista de la imagen opcional".

0

Así que aquí hay una manera de hacerlo. Coloque un UIImageView en el borde izquierdo de la celda. No configure una imagen para que quede en blanco como inicio.

Entonces, suponiendo que está haciendo una célula de medida y una clase para la que UITableViewCell, hacer algo como esto:

import UIKit 

class MyCustoTableViewCell: UITableViewCell { 

    @IBOutlet weak var commandOption: UILabel! 
    @IBOutlet weak var checkMarkImage: UIImageView! 

    // Sets a left side checkmark on a cell when selected 
    override func setSelected(selected: Bool, animated: Bool) { 
     super.setSelected(selected, animated: animated) 
     self.checkMarkImage.image = selected ? UIImage(named: "BlueCheck") : .None 
     self.commandOption.font = selected ? UIFont(name: "Avenir-Heavy", size: 22) : UIFont(name: "Avenir-Book", size: 22) 

     // more check mark on the right side 
     // self.accessoryType = selected ? .Checkmark : .None 
    } 
} 

Nota la parte inferior comentado es si desea que la marca de verificación a la derecha. El método super.setSelected se dispara cuando un usuario ha tocado en la celda de la tabla. Asegúrese de que tiene esta implementado también:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
     // do any changes needed here or leave blank if just adding check 
    } 
} 

Por último, asegúrese de que tiene @ 2x y 3x @ marca de verificación activos PNG en su carpeta Activos. Tenga en cuenta que se llaman "BlueCheck" en este ejemplo, pero use lo que sea que se llame a los activos de su marca de verificación.

Este enfoque asegura que cuando un usuario selecciona una nueva fila, la marca de verificación desaparece en la celda actual.

En este caso, doblo el texto que está a la derecha de la vista de la imagen para indicar además que era la fila seleccionada.

0

En Swift puede pulsar Comando + Ctrl + Barra espaciadora para mostrar emoticonos y caracteres especiales o puede copiar este ✓ ✔️

Cuestiones relacionadas