uitableviewdatasource uitableviewcell example cocoa-touch uitableview

cocoa-touch - example - uitableviewcell lifecycle



¿Cómo puedo personalizar la imagen de divulgación de accesorios en una UITableViewCell? (7)

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.


Hay un buen ejemplo de Apple que muestra cómo usar UIControl para cumplir con este tipo de personalización de accesorios.

Anulación - (void)drawRect:(CGRect)rect en UIControl no es la manera más fácil, pero le da mucha flexibilidad para diseñar vistas bonitas de accesorios.


Intenté con el código anterior y parece que ya no funciona, tal vez debido a la antigüedad de esta publicación, así que lanzaré mi línea que me dio la vista de accesorios personalizada.

[cell setAccessoryView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrowBtn"]]];

Espero que alguien encuentre esto útil.


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, prueba esto antes de votar! ¡Porque en este momento tiene 2 votos ascendentes y 2 votos negativos!


Me encontré con el mismo problema que Greg: la vista de accesorios no rastrea (si usa UIImageView)

Lo solucioné así:

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


NOTA: NO configure una celda personalizada 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.

Tenga en cuenta el 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; }


Tendrá que crear una vista personalizada y asignarla a la propiedad UITableViewCell objeto UITableViewCell . Algo como:

myCell.accessoryView = [[ UIImageView alloc ] initWithImage:[UIImage imageNamed:@"Something" ]];


- (UITableViewCell *)tableView:(UITableView *)tView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UIImage *indicatorImage = [UIImage imageNamed:@"Arrow.png"]; cell.accessoryView =[[[UIImageView alloc] initWithImage:indicatorImage] autorelease]; return cell; }

bueno, hago esto con el código de ayuda dado anteriormente