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