繁体   English   中英

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

[英]How to set NSStatusBar title from other class?

在我的课程之一中,我设置了我的NSStatusBar:

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

是否可以通过某种方式调用类似的内容:

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

从另一个班? 我想更改标题,因为用户已将信息输入到由其他类处理的首选项窗口中。

我试图做一个类函数:

+(void)ChangeTitel 

我从preferences类调用了它,它似乎能够调用它,但是不知何故无法访问statusItem对象。

有任何想法吗? :)

如果要更改另一个类别的标题,则该另一个类别需要引用该状态Item。

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

从您的问题来看,我认为您是OOP编码的新手。 一个类是一组代码。sorta,如果您[[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"];

如果管理器类的实例是接口构建器出口,或者已在之前创建,则您不应该使用alloc] init]作为第一行。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM