我想给我的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];
}
当然我给了字符串一些内容。 提前致谢
答案 0 :(得分: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指标的占位符文本。不确定。