comment configurer setEnabled: pour NSButton dans un NSTableView
-
13-10-2019 - |
Question
Salut à tous J'ai un NSTableView qui a trois colonnes. La première est une case à cocher et le troisième est un bouton. Le bouton état « est activé » dépend de si oui ou non la case est cochée.
Je suis en train le contenu de la table dans la méthode awakeFromNib
et je suis l'état de mise en œuvre de case à cocher dans la méthode - (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row
. Je dois trouver un setEnabled:
chemin pour la NSButton
Merci
Pas de solution correcte
Autres conseils
Une bonne façon d'états des boutons dans un ensemble NSTableView est d'utiliser un NSArrayController et le lier aux colonnes du NSTableView:
- Bind la colonne qui contient les boutons à NSArrayController (voir cet exemple )
- Sous Activé
- Définissez le
Controller Key
arrangedObjects - Définissez le
Model Key Path
à l'état du bouton de NSArrayController. Par exemple, permettent de faire appel de ce activé .
- Définissez le
dans la classe où vous avez le NSArrayController et le délégué NSTableView, faire quelque chose comme ça après avoir cliqué sur une case à cocher:
- (void)updateArrayControllerWithButtonState: (BOOL)isEnabled
{
// theTable is the NSTableView instance variable
NSInteger row = [theTable clickedRow];
// Get the array of values that populates the table
NSMutableDictionary *arrayValues = [[theArrayController arrangedObjects] objectAtIndex:row];
// Actually change the NSArrayController's value to match
[arrayValues setObject:[NSNumber numberWithBool:[model isEnabled]] forKey:@"enabled"];
[theTable reloadData];
}
Pourvu que vous configurer vos fixations correctement pour NSArrayController & NSTableView, cette fonction devrait mettre à jour l'état actuel du bouton pour correspondre à celle du NSArrayController.
Ce code est non testé, mais devrait faire la lumière sur l'idée générale.