我想给我的 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];
}
当然我给了字符串一些内容。 提前致谢
最佳答案
问题在于 awakeFromNib
在初始化 myString
之前被调用。这就是为什么你的字符串文字可以工作,但用变量初始化却不能。
您可以尝试此操作,因为您在评论中提到要从类外设置标题。
(1) 将 ivar NSString *myString
更改为声明的属性:@property (nonatomic, Strong) NSString *myString;
(2) 为您的状态项创建一个 ivar:NSStatusItem *_statusItem;
并在 awakeFromNib
中初始化,就像您对此 ivar 所做的那样。
(3) 为您的 myString
创建自定义 setter :
- (void)setMyString:(NSString *)aString {
_myString = aString;
[_statusItem setTitle:aString];
}
如果您不需要 myString
来执行其他任何操作,则可以省略它,只需实现一个公共(public)方法来设置 NSStatusItem
标题。注意:要创建该状态项,您可能需要一些 UI 指标的占位符文本。不确定。
关于objective-c - 使用 NSString 作为 statusItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12759090/