3

タイトルが時間とともに変化する NSStatusItem を実装したいと思います。私の最終的な目標は、設定した画像の横にあるメニュー バーにカウントダウン タイマーを表示することです。多分私はこれについて間違った方法で進んでいます。しかし、タイマーを表す、時間の経過とともに絶えず変化する文字列が既にあります。作成したメニューレットに設定した画像の横にその文字列を配置する方法を見つけようとしています。

statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
[statusItem setTitle:"29:30"];

setTitle メソッドを複数回呼び出してみましたが、うまくいかないようです。オブジェクトの初期化の前に機能するのは、setTitle の最初の呼び出しだけです。その後、何も起こりません。タイマーを変更するたびに NSStatusItem オブジェクトを解放して再作成できると思いますが、それは非常に非効率的です。それが機能するかどうかさえわかりません。

また、setToolTip メソッドを使用してタイマーのカウントダウンを表示することも検討しました。しかし、それは setTitle メソッドと同じようです。一度設定すると、NSStatusItem オブジェクトを解放して新しいオブジェクトを作成するまで変更できません。

任意の提案をいただければ幸いです。

ありがとうございました

デイブ

4

2 に答える 2

2

私は自分の質問に答えました。-setTitle は、カウントダウン タイマーのタイトルを動的に変更するために複数回呼び出すことができます。カスタム ビューは必要ありません。私の問題は、タイマーが正しく機能せず、メニューレットの長さがタイマーのテキストを表示するのに十分でないという問題に遭遇しました。setTitle を呼び出してカウントダウンを更新し、動的なツールチップを毎秒作成できるようになりました。私は当初、標準メソッド setTitle では不可能だと考えていました。私は間違っていた。

statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
[statusItem setTitle:"29:30"];

デイブ

于 2010-11-04T15:17:55.850 に答える
0

-setView: を使用しないのはなぜですか? 独自のカスタム ビューを作成して、好きなように更新できます。

于 2010-11-03T11:59:21.193 に答える