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) 将您的 ivar 更改NSString *myString为声明的属性:@property (nonatomic, strong) NSString *myString;

(2) 为您的状态项创建一个 ivar:NSStatusItem *_statusItem;并按照您的操作进行初始化,awakeFromNib但要使用此 ivar。

(3) 为您创建一个自定义设置器myString

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

如果你不需要myString其他任何东西,你可以省去它,只需实现一个公共方法来设置NSStatusItem标题。注意:要创建该状态项,您可能需要一些用于 UI 指标的占位符文本。不确定。

于 2012-10-06T18:15:54.847 回答