2008-12-31 9 views

Respuesta

113

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" ]]; 
+7

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? –

+0

Hay más explicaciones en http://stackoverflow.com/questions/869421/using-a-custom-image-for-a-uitableviewcells-accessoryview-and-having-it-respond – jarnoan

+0

¿Es posible hacerlo mediante UIApperance? proxy en UITableViewCell? – Claus

7

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 ] ; 
+1

¿Por qué no usar simplemente un UIButton simple con una imagen, en lugar de manipular el contenido de la capa? –

+0

Siento que debo haberlo intentado y no funcionó por alguna razón. Pero seguro, intente con UIButton primero ... – nielsbot

+0

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

9
- (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

-2

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

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!

-1

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.

+2

Tom, la respuesta aceptada en esta entrada es exactamente la misma. ¿Que me estoy perdiendo aqui? – jpm

0

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.

enter image description here

Cuestiones relacionadas