gpt4 book ai didi

objective-c - 使用 NSString 作为 statusItem

转载 作者:行者123 更新时间:2023-12-03 17:23:43 26 4
gpt4 key购买 nike

我想给我的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com