1

statusItemにタイトルを付けて、コンテンツを変更する必要があります。しかし、変数を宣言すると、メニューバーに何も表示されません。.hの私の文字列:

@interface AppDelegate : NSObject <NSApplicationDelegate> { 

NSString *myString;

}

通常のテキストではすべてが機能します:@"text"しかし、私がこのようにすると、.m:

-(void)awakeFromNib {
statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength] retain];

[statusItem setTitle:myString];

[statusItem setMenu:statusMenu];
[statusItem setToolTip:@"my Tooltip"];
[statusItem setHighlightMode:YES];

}

もちろん、私は文字列にいくつかの内容を与えました。前もって感謝します

4

1 に答える 1

0

問題は、初期化awakeFromNibされる前に呼び出されることです。myStringこれが、文字列リテラルは機能しますが、変数での初期化が機能しない理由です。

あなたのコメントでは、クラスの外からタイトルを設定することをほのめかしているので、これを試すことができます。

(1) ivarNSString *myStringを宣言されたプロパティに変更します。@property (nonatomic, strong) NSString *myString;

(2) ステータス アイテムの ivar を作成します。この ivar を使用してNSStatusItem *_statusItem;初期化します。awakeFromNib

(3) のカスタム セッターを作成しますmyString

- (void)setMyString:(NSString *)aString {
   _myString = aString;
   [_statusItem setTitle:aString];
}

他に必要がない場合は、それを省略して、タイトルmyStringを設定するパブリック メソッドを実装するだけでかまいません。NSStatusItem注: そのステータス アイテムを作成するには、UI メトリックのプレースホルダー テキストが必要になる場合があります。特定されません。

于 2012-10-06T18:15:54.847 に答える