Comment faire en sorte qu'un élément de la barre de menus affiche le nombre de lignes d'un tableau?

StackOverflow https://stackoverflow.com/questions/823570

  •  05-07-2019
  •  | 
  •  

Question

J'ai une table de données principale et j'aimerais que l'élément de la barre de menus affiche le nombre de lignes qu'il contient. J'ai déjà créé l'élément de la barre de menus en utilisant le code suivant:

 -(void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
NSStatusItem *statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength] retain]; //Create new status item instance
[statusItem setHighlightMode:YES]; //This does something, I'm sure of it.
[statusItem setTitle:[NSString stringWithFormat:@"%C",0xff50]]; //This labels it. You can also use setImage instead to use an icon. That current code will result in a item labeled "p"
[statusItem setEnabled:YES]; //Self explanatory
[statusItem setMenu:theMenu];
[statusItem setToolTip:@"TOOLTIP HA AWESOME AMIRITE?"]; //Optional, just for kicks.
}

Que dois-je ajouter pour que l'élément de la barre de menus affiche le nombre de lignes de la table?

Était-ce utile?

La solution

Si vous n'avez pas besoin de mise à jour en direct, vous pouvez essayer cette approche:

1) définissez le délégué du menu:

[theMenu setDelegate:self];

2) et implémentez la méthode du délégué:

- (void)menuWillOpen:(NSMenu *)menu {
    NSUInteger count = [self.tableView numberOfRows];
    [[menu itemAtIndex:0] setTitle: [NSString stringWithFormat:@"%d rows", count]];
}

Ce code actualisera l'élément de menu chaque fois que l'utilisateur ouvre le menu. Si vous souhaitez l'actualiser à chaque fois que quelque chose dans la table change, vous devrez utiliser KVO pour observer le contrôleur RAID. Vous devrez également utiliser KVO si vous souhaitez afficher le nombre dans le titre de StatusItem.

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