gpt4 book ai didi

objective-c - 如何从其他类设置 NSStatusBar 标题?

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

在我的一个类中,我设置了 NSStatusBar,如下所示:

        statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength] retain];
[statusItem setMenu:statusMenu];

是否可以以某种方式调用类似的东西:

[statusItem setTitle:@"Waiting for data..."];

来自另一个类(class)?当用户将信息输入到由不同类处理的首选项窗口时,我想更改标题。

我尝试创建一个类函数:

+(void)ChangeTitel 

我从首选项类中调用它,它似乎能够调用它,但不知何故无法访问 statusItem 对象。

有什么想法吗? :)

最佳答案

如果您想更改另一个类的标题,则该其他类需要引用该状态项。

所以你要做的就是编写一个返回此状态项的指针的方法(它是一个实例变量,对吗?),然后调用该方法,以获取另一个类中的 NSStatusItem 对象。

从你的问题来看,我认为你是 OOP 编码的新手。类是一组代码......排序,如果你[[Class alloc] init]你为类分配一些内存,并在其中创建该类的一个新对象。一个新的实例。如果您调用以 - 开头的内容,那么您正在调用实例方法,这需要您有一个实例。如果您使用 + 调用某些内容,则您正在调用 CLASS 方法,该方法没有实例,因此无法访问状态项的实例变量。

- (NSStatusItem *)statusItem
{ return statusItem; }

不要忘记在头文件中声明此方法,否则您将收到编译器警告。

应该位于管理状态项的类中。然后在要使用状态项的类中:

#import "ManagerClass.h" // on top, so we have the method declared

然后:

ManagerClass *someInstanceToIt = [[ManagerClass alloc] init];
[(NSStatusItem *)[someInstanceToIt statusItem] setTitle:@"New Title"];

如果管理器类的实例是接口(interface)构建器导出,或者之前已创建,那么您不应该使用 alloc] init] 执行第一行

如果您需要更多帮助,请发表评论。

关于objective-c - 如何从其他类设置 NSStatusBar 标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4912408/

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