C'est en fait assez facile.
Il suffit de créer une nouvelle sous-classe de UIControl et de tout mettre dedans (pas besoin d'un contrôleur séparé.) Appelons-le ToggleImageControl.
@interface ToggleImageControl : UIControl
{
BOOL selected;
UIImageView *imageView;
UIImage *normalImage;
UIImage *selectedImage;
}
Créez un ToggleImageControl pour chaque cellule et ajoutez-le à l'emplacement approprié.
ToggleImageControl *toggleControl = [[ToggleImageControl alloc] initWithFrame: <frame>];
toggleControl.tag = indexPath.row; // for reference in notifications.
[cell.contentView addSubview: toggleControl];
Ajoutez un UIImageView pour contenir l'image. Ajoutez une cible pour l'événement tactile.
- (void) viewDidLoad
{
normalImage = [UIImage imageNamed: @"normal.png"];
selectedImage = [UIImage imageNamed: @"selected.png"];
imageView = [[UIImageView alloc] initWithImage: normalImage];
// set imageView frame
[self.view addSubview: imageView];
[self addTarget: self action: @selector(toggleImage) forControlEvents: UIControlEventTouchUpInside];
}
Définissez la propriété d'image de UIImageView pour mettre à jour l'image; cela déclenchera le redessin sans effets secondaires.
- (void) toggleImage
{
selected = !selected;
imageView.image = (selected ? selectedImage : normalImage);
// Use NSNotification or other method to notify data model about state change.
// Notification example:
NSDictionary *dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt: self.tag forKey: @"CellCheckToggled"];
[[NSNotificationCenter defaultCenter] postNotificationName: @"CellCheckToggled" object: self userInfo: dict];
}
Vous aurez évidemment besoin de masser certaines choses. Vous voudrez probablement transmettre les deux noms d'image pour les rendre plus réutilisables, et je vous recommande également de spécifier la chaîne de nom de notification depuis l'extérieur de l'objet (en supposant que vous utilisez la méthode de notification.)
salut rein, comment pouvez-vous faire cette image pour votre question? Y at-il un logiciel disponible pour cela? – raaz
Où obtenez-vous l'icône en forme de coche? –
Puis-je également cogner d'où vous avez cette icône de coche? – Ralphleon