2012-10-06 22 views
1

我想給我的statusItem一個標題,它應該改變它的內容。但如果我聲明一個變量,菜單欄中就不會出現任何內容。 我的字符串中的.h:使用NSString for statusItem

@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]; 

} 
當然

我給串了一些內容。 在此先感謝

+0

但是你在哪裏初始化'myString'? – FluffulousChimp

回答

0

問題是在myString被初始化之前調用awakeFromNib。這就是爲什麼你的字符串的工作原理,但與變量初始化不。

你可以試試這個,因爲在你的評論中你提到了從課外設置標題。

(1)改變你的伊娃NSString *myString以聲明的屬性:@property (nonatomic, strong) NSString *myString;

(2)你的狀態項創建伊娃:NSStatusItem *_statusItem;awakeFromNib初始化爲你正在做,但這個伊娃。

(3)爲您的myString一個定製的setter:

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

如果您不需要myString爲別的,您可以用分液,只是實現一個公共的方法來設置NSStatusItem稱號。注意:可能要創建該狀態項目,您可能需要一些UI指標的佔位符文本。不確定。