作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的一个类中,我设置了 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/
我是一名优秀的程序员,十分优秀!