Me gustaría utilizar una versión personalizada de la imagen de accesorio de divulgación estándar en mi UITableView. ¿Cómo puedo hacer esto? Espero que la subclasificación de UITableViewCell no sea necesaria para algo tan básico.¿Cómo puedo personalizar la imagen de divulgación de accesorios en una UITableViewCell?
Respuesta
Deberá crear una vista personalizada y asignarla a la propiedad accessoryView
del objeto UITableViewCell
. Algo así como:
myCell.accessoryView = [[ UIImageView alloc ]
initWithImage:[UIImage imageNamed:@"Something" ]];
me encontré con el mismo problema que Greg - la vista accesorio no hace un seguimiento (si se utiliza un UIImageView)
Lo resuelto de esta manera:
UIImage * image = [ UIImage imageNamed:@"disclosure-button-grey.png" ] ;
UIControl * c = [ [ UIControl alloc ] initWithFrame:(CGRect){ CGPointZero, image.size } ] ;
c.layer.contents = (id)image.CGImage ;
[ c addTarget:self action:@selector(accessoryTapped:) forControlEvents:UIControlEventTouchUpInside ] ;
cell.accessoryView = c ;
[ c release ] ;
¿Por qué no usar simplemente un UIButton simple con una imagen, en lugar de manipular el contenido de la capa? –
Siento que debo haberlo intentado y no funcionó por alguna razón. Pero seguro, intente con UIButton primero ... – nielsbot
Al usar una imagen personalizada, la ubicación puede cambiar y el usuario puede tener problemas al hacer clic en ella, ya que su marco puede ser pequeño. lo mejor sería agregar un botón de subvista encima de la vista de accesorios, de esta manera puede manejar el tamaño y la ubicación. – david72
- (UITableViewCell *)tableView:(UITableView *)tView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UIImage *indicatorImage = [UIImage imageNamed:@"Arrow.png"];
cell.accessoryView =[[[UIImageView alloc] initWithImage:indicatorImage] autorelease];
return cell;
}
así que hago esto con la ayuda de código dada anteriormente
NOTA: No establezca una celda personalizado para etiquetar: 0. Esa etiqueta está reservada para la vista de etiqueta de texto. Si configura etiquetas en Xcode Storyboard, , debe establecer etiquetas para vistas/etiquetas personalizadas en 1 o más.
Nota ejemplo de Apple:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath (NSIndexPath *)indexPath
{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];
UILabel *label;
label = (UILabel *)[cell viewWithTag:1];
label.text = [NSString stringWithFormat:@"%d", indexPath.row];
label = (UILabel *)[cell viewWithTag:2];
label.text = [NSString stringWithFormat:@"%d", NUMBER_OF_ROWS - indexPath.row];
return cell;
}
lo haría de la siguiente manera:
UIImageView *chevronImgVw = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"chevron_accessory_vw_img.png"]];
chevronImgVw.frame = CGRectMake(cell.accessoryView.frame.origin.x, cell.accessoryView.frame.origin.y, 10, 20);
cell.accessoryView = chevronImgVw;
Por favor, probar esto antes de bajar voto! ¡Porque en este momento tiene 2 votos ascendentes y 2 votos descendentes!
Probé el código anterior y parece que ya no funciona, tal vez debido a la edad de esta publicación, así que voy a tirar abajo de mi línea que me dio la vista de accesorios personalizados.
[cell setAccessoryView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrowBtn"]]];
Espero que alguien lo encuentre útil.
Tom, la respuesta aceptada en esta entrada es exactamente la misma. ¿Que me estoy perdiendo aqui? – jpm
Hay un nice example from Apple que muestra cómo usar UIControl
para completar este tipo de accesorio. Personalización de la vista.
Anulación de - (void)drawRect:(CGRect)rect
en UIControl no es la forma más fácil, pero le ofrece mucha flexibilidad para diseñar bonitas vistas de accesorios.
- 1. Ocultar/Mostrar Indicador de divulgación de accesorios UITableViewCell
- 2. ¿Cómo obtener una vista de accesorios transparente en UITableViewCell? (w/Screenshot)
- 3. ¿Cómo puedo configurar el color accesorio de una UITableViewCell?
- 4. Modificación de la vista de eliminación de accesorios en una UITableViewCell
- 5. Cambio de la imagen de un botón de detalle divulgación (Xcode 4.2)
- 6. ¿Cómo puedo personalizar la salida de Jenkins?
- 7. UITableViewCell Establecer imagen seleccionada
- 8. Configuración de las dimensiones de UIImage en la imagen UITableViewCell
- 9. Personalizar UISlider (seguimiento de la altura de la imagen)
- 10. ¿Cómo puedo personalizar la barra de título en JFrame?
- 11. Alternar imagen de casilla de verificación en UITableViewCell
- 12. ¿Cómo puedo personalizar la clasificación de categorías en un PropertyGrid?
- 13. Obtener en la pantalla las coordenadas de una cierta UITableViewCell?
- 14. Posicionando la imageView de una UITableViewCell
- 15. UITableViewCell con imagen a la derecha?
- 16. ¿Cómo mostrar el indicador de divulgación mientras las celdas están en modo de edición?
- 17. ¿Cómo puedo personalizar una vista de alerta de iOS?
- 18. iOS UITableViewCell accesorio en el lado izquierdo?
- 19. Carga de imagen UITableViewCell asincrónica con GCD
- 20. ¿Cómo puedo personalizar la estructura de directorios de Jasmine?
- 21. ¿Cuál es la diferencia entre un botón de divulgación de detalles y un indicador de divulgación?
- 22. ¿Cómo puedo crear una UITableViewCell de tamaño variable?
- 23. ¿Cómo puedo personalizar la generación de código de cliente WCF?
- 24. Cómo crear efecto de sombra en uitableviewcell?
- 25. ¿Puedo evitar que el indicador de divulgación de una celda se vuelva blanco cuando se selecciona?
- 26. Cambiar la altura de una UITableViewCell
- 27. ¿Cómo puedo personalizar la plantilla del correo electrónico de Mailboxer?
- 28. botón Agregar Divulgación a MKPointAnnotation
- 29. ¿Cómo puedo personalizar la ventana emergente QCompleter en PyQt?
- 30. Cómo personalizar UITableView de EKEventViewController?
Si hago esto, noto que el método UITableViewDelegate - [tableView: accessoryButtonTappedForRowWithIndexPath:] ya no se vuelve a llamar. ¿Es ese comportamiento esperado? ¿Hay alguna manera de mantener este método funcionando? –
Hay más explicaciones en http://stackoverflow.com/questions/869421/using-a-custom-image-for-a-uitableviewcells-accessoryview-and-having-it-respond – jarnoan
¿Es posible hacerlo mediante UIApperance? proxy en UITableViewCell? – Claus