2 votes

Désactiver les coches dans les cellules statiques de l'UITableView

J'ai une UITableView avec 5 cellules groupées, permettant aux utilisateurs d'accéder à d'autres écrans spécifiques à partir de chaque option. Les utilisateurs reviendront ensuite à cet écran et je souhaite pouvoir cocher la dernière cellule sélectionnée et désactiver les coches précédentes.

J'essaie d'y parvenir en didSelectRowAtIndexPath: mais n'arrive pas à faire ce qu'il faut.

Il existe quelques réponses pour les cellules dynamiques mais rien pour les cellules statiques.

2voto

jlehr Points 9809

Il existe plusieurs façons de gérer cela, mais l'une des plus simples consiste à stocker les références aux cellules dans une collection afin de pouvoir facilement envoyer des messages à toutes les cellules. Par exemple, vous pouvez ajouter une propriété comme la suivante :

@propriété (forte, nonatomique) IBOutletCollection(NSArray) *cells ;

@property (strong, nonatomic) IBOutletCollection(UITableViewCell) NSArray *cells;

et connectez-le à chacune des cellules de votre fichier nib ou de votre storyboard. (Si vous n'utilisez pas Interface Builder, laissez tomber le bouton IBOutletCollection et remplissez le tableau vous-même à chaque fois que vous créez des cellules).

Vous pouvez ensuite gérer la sélection comme suit :

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    for (UITableViewCell *currCell in self.cells)
    {
        currCell.accessoryType = UITableViewCellAccessoryNone;
    }

    UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
    selectedCell.accessoryType = UITableViewCellAccessoryCheckmark;
}

1voto

Barisheff Points 11

La syntaxe correcte pour IBOutletCollection est la suivante :

@property (strong, nonatomic) IBOutletCollection(UITableview) NSArray *cells;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X