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é .

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top