メニューバーアイテムに、テーブル内の行数を表示するにはどうすればよいですか?

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

  •  05-07-2019
  •  | 
  •  

質問

コアデータテーブルがあり、メニューバー項目にテーブル内の行数を表示させたい。次のコードを使用して、メニューバー項目を既に作成しました。

 -(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.
}

表にある行数をメニューバー項目に表示するには、何を追加する必要がありますか?

役に立ちましたか?

解決

ライブアップデートが必要ない場合は、次の方法を試してください:

1)theMenuのデリゲートを設定します:

[theMenu setDelegate:self];

2)デリゲートメソッドを実装する:

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

このコードは、ユーザーがメニューを開くたびにメニュー項目を更新します。テーブル内の何かが変更されるたびに更新する場合は、KVOを使用してアレイコントローラーを監視する必要があります。 StatusItemのタイトルにカウントを表示する場合もKVOを使用する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top