web-dev-qa-db-fra.com

Comment personnaliser l'image de divulgation d'accessoire dans une UITableViewCell?

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

50
jpm

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

myCell.accessoryView = [[ UIImageView alloc ] 
                       initWithImage:[UIImage imageNamed:@"Something" ]];
121
codelogic
- (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 donné ci-dessus 

9
STUPID PROGRAMMER

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 ça:

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

Il existe un Bel exemple d’Apple montrant comment utiliser UIControl pour réaliser ce type de personnalisation d’accessoires.

Remplacer - (void)drawRect:(CGRect)rect dans UIControl n’est pas la solution la plus simple, mais vous offre une grande flexibilité pour créer de jolies vues accessoires.

enter image description here

0
H6.

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 bas! Parce qu’à l’heure actuelle, il a 2 votes positifs et 2 votes négatifs!

0
Randika Vishman