[英]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.