2010-03-03 6 views
0

Existe-t-il un moyen simple de changer la couleur du "UITableViewCellAccessoryCheckmark" du bleu standard au noir? Ou ai-je besoin de créer une sous-classe de uitableviewcell et d'insérer moi-même une imageview?UITableViewCellAccessoryCheckmark en noir?

Merci :-) Sebastian

Répondre

1

Pour autant que je sais qu'il n'y a aucun moyen de le faire.

J'ai fini par implémenter une vue personnalisée complète pour mon accessoireView. Il est également plus facile de le changer lors de l'interaction de l'utilisateur et de décider de la zone de tappable, que je trouve souvent trop petit. Je suppose que vous pourriez faire avec juste un bouton si vous n'avez pas besoin de différents points de vue.

J'ai fait un customView, placé un bouton transparent à l'intérieur. Ce point de vue ajouter à la cellule:

CustomDisclosureArea *disArea = [[CustomDisclosureArea alloc] init]; 
[disArea setFrame:CGRectMake(280.0f, 0.0f, 40.0f, 71.0f)]; 
[disArea setTag:DISCLOSURE_ID]; 
[disArea.emptyButton addTarget:self action:@selector(cellButtonHandler:event:) forControlEvents:UIControlEventTouchUpInside]; //this the button inside the view. 
[cell.contentView addSubview:disArea]; 
[disArea switchToState:AreaStateBlank]; //I can set it to different states (blank, checkmark, empty etc. 
[disArea release]; 

Maintenant, la méthode qui est appelée lorsque le accessoryView est exploité est un peu spécial car nous avons besoin de savoir quelle cellule a été exploité.

- (void) cellButtonHandler:(id)sender event:(id)event { 

    NSSet *touches = [event allTouches]; 
    UITouch *touch = [touches anyObject]; 
    CGPoint currentTouchPosition = [touch locationInView:self.tableView]; 
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint: currentTouchPosition]; 
} 

Mais vous vous retrouvez avec un NSIndexPath, qui est la même chose que vous obtiendrez dans un didSelectRow ou méthode et accessoryButtonTapped.

Hope this helps si vous décidez de faire un accessoryView personnalisé :)

+0

merci beaucoup. Des pièces comme celles-ci me font me demander pourquoi la pomme ne mange pas sa propre nourriture et remplit l'accessoireVoir quand je définis le style. ;-) – Sebastian

0

Je n'ai pas essayé mais il pourrait être possible d'interroger simplement la propriété accessoryView de la cellule et trouver la coche et le remplacer par un autre image (c'est presque certainement une image.) Je pense que le style de cellule est juste un tablecell de style par défaut avec une cellule d'image qui contient la coche.

+0

accessoryView est nul si vous ne le définissez pas explicitement par vous-même. si elle est définie, alors accessoryType est ignoré. – Sebastian

+0

Bummer. J'espérais que ce serait plus simple. – TechZen