Comment personnaliser l’image de divulgation de l’accessoire dans un UITableViewCell?

J’aimerais utiliser une version personnalisée de l’image d’accessoire de divulgation standard dans mon UITableView. Comment puis-je faire ceci? J’espère que la sous-classe UITableViewCell n’est pas nécessaire pour quelque chose d’aussi simple.

Vous devez créer une vue personnalisée et l’affecter à la propriété accessoryView de l’object UITableViewCell . Quelque chose comme:

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

eh bien je le fais avec le code d’aide ci-dessus

J’ai rencontré le même problème que Greg – la vue des accessoires ne suit pas (si vous utilisez un UIImageView)

Je l’ai résolu comme ceci:

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

Il existe un bel exemple d’Apple montrant comment utiliser UIControl pour réaliser ce type de personnalisation de la vue accessoire.

Remplacer - (void)drawRect:(CGRect)rect dans UIControl n’est pas la manière la plus facile, mais vous donne beaucoup de flexibilité pour styler de belles vues d’accessoires.

entrer la description de l'image ici

Je le ferais comme suit:

 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; 

S’il vous plaît, essayez ceci avant de voter! Parce qu’à l’heure actuelle, il ya 2 votes positifs et 2 votes faibles!

J’ai essayé le code ci-dessus et cela ne semble plus fonctionner, peut-être à cause de l’âge de ce post, je vais donc jeter ma ligne qui m’a donné une vue d’accessoires personnalisée.

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

J’espère que quelqu’un trouve cela utile.

Remarque: ne définissez pas une cellule personnalisée à marquer: 0. Cette balise est réservée à la vue textLabel. Si vous définissez des balises dans Xcode Storyboard, vous devez définir des balises pour les vues / étiquettes personnalisées sur 1 ou plus.

Notez l’exemple d’Apple:

  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath (NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"]; UILabel *label; label = (UILabel *)[cell viewWithTag:1]; label.text = [NSSsortingng ssortingngWithFormat:@"%d", indexPath.row]; label = (UILabel *)[cell viewWithTag:2]; label.text = [NSSsortingng ssortingngWithFormat:@"%d", NUMBER_OF_ROWS - indexPath.row]; return cell; }