2012-03-21 11 views
8

Tengo un UITableView en una aplicación iOS5.1 donde hice¿Por qué no se muestran las marcas cuando UITableView.allowsMultipleSelection está habilitado?

self.tableView.allowsMultipleSelection=YES; 

La documentación de Apple "Cuando el valor de esta propiedad es SÍ, una marca de verificación junto a cada fila que se toca. Tapping la fila nuevamente elimina la marca de verificación ".

Puedo seleccionar varias filas, ya que el fondo se establece en Azul. Sin embargo, no se muestran marcas de verificación. ¿La marca de verificación debe establecerse como se muestra a continuación en didSelectRowAtIndexPath porque estoy usando UITableViewCells personalizados?

cell.accessoryType = UITableViewCellAccessoryCheckmark; 
+1

Tengo exactamente el mismo problema. ¿Encontraste una solución a este problema? Por favor hagamelo saber. – AlexR

+0

La misma pregunta que AlexR aquí. Las siguientes respuestas de "Tuve el mismo problema, así que decidí ignorarlo y volver a implementar la función yo mismo" no son satisfactorias. – Tommy

Respuesta

5

Realizo las marcas de forma manual en mis subclases de uitableviewcell. Tendrá que hacer la UITableViewCellAccessoryCheckmark manualmente en didSelectRowAtIndexPath y mantener una pista de la que está seleccionada. Yo recomendaría algo así:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell* cell = [tableview cellAtIndex:indexPath]; 
    if(cell.accessoryType == UITableViewCellAccessoryCheckmark) 
     cell.accessoryType = UITableViewCellAccessoryCheckmark; 
    else 
    cell.accessoryType = UITableViewCellAccessoryNone; 
} 

Nota: No lo probé, pero debería darle la idea básica. Hazme saber si tienes alguna pregunta. ¿Intentó usar una uitableviewcell por defecto y ver si hizo la marca de verificación? No creo que una subclase tenga un problema, siempre y cuando no estés modificando en la subclase.

+1

Gracias. Esto es lo que había hecho anteriormente, pero parece que de los documentos de Apple pasaría automáticamente en iOS5 +. Lo he implementado de esta manera ahora. Sin embargo, es posible que haya un error que estoy intentando rastrear relacionado con la marca de verificación que se muestra automáticamente en ciertas situaciones. – ChrisP

+1

Ah, está bien. Sí, estoy de acuerdo en que los documentos parecen indicar que las marcas de verificación deben manejarse automáticamente. Tal vez solo está implicando que serían las pautas adecuadas? De todos modos, de nuevo estoy de acuerdo en que es un error o que los documentos deben redactarse de nuevo. – daltoniam

1

Otra opción es utilizar tableView: didDeselectRowAtIndexPath: además de tableView: didSelectRowAtIndexPath:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

{

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 

cell.accessoryType = UITableViewCellAccessoryCheckmark; 

}

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath { 

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; 

cell.accessoryType = UITableViewCellAccessoryNone; 

}

+0

Si lo hace, la casilla de verificación se mostrará a la derecha en lugar de a la izquierda. –

Cuestiones relacionadas