首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否从其他类设置NSStatusBar标题?

是否从其他类设置NSStatusBar标题?
EN

Stack Overflow用户
提问于 2011-02-06 21:42:08
回答 2查看 175关注 0票数 0

我正在尝试更改NSStatusBar中另一个类的标题,即我的preferences类。

在我的ManagerClass.m & .h中,我声明了

代码语言:javascript
复制
- (NSStatusItem *)statusItem { return statusItem; }

然后将ManagerClass.h导入到我的首选项中。m

然后,我试着执行以下命令:

代码语言:javascript
复制
ManagerClass *someInstanceToIt = [[ManagerClass alloc] init]; 
[(NSStatusItem *)[someInstanceToIt statusItem] setTitle:@"New Title"];

但是,如果我使用if进行测试,可以看到statusItem是空的,那么statusItem似乎永远不会被传递给首选项.m文件。

有什么想法吗?我完全卡住了

EN

回答 2

Stack Overflow用户

发布于 2011-02-06 22:10:28

在使用[[ManagerClass alloc] init]时,您正在创建一个新实例。您可能需要以前创建的对象,而不是新对象。

有许多方法可以解决您的问题:-第一个解决方案是传递创建的ManagerClass实例,并将其传递给首选项控制器。但在这种情况下,您必须不断地将该ManagerClass实例保存在一个变量中,这样才不会丢失它。-另一种方法是实现单例设计。这意味着您可以选择在整个应用程序中使用一个共享对象。下面是一个例子:

代码语言:javascript
复制
@implementation aClass
- (id)init {
    self = [super init];
    if(self != nil) {
    }
    return self;
}

+ (id)sharedInstance { // note the + for a class method
    static id shared = nil;
    if(shared == nil) {
        shared = [[self alloc] init];
    }
    return shared;
}
@end

现在,您可以调用此代码以在每次调用时接收相同的对象:

代码语言:javascript
复制
aClass *sharedObject = [aClass sharedInstance];

希望能有所帮助,ief2

票数 1
EN

Stack Overflow用户

发布于 2011-02-07 04:12:17

首先,someInstanceToIt应该是一个实例变量,这样只要需要状态项,您就可以拥有这个实例。

其次,确保实现-[ManagerClass init]来创建NSStatusItem,并将其存储在ManagerClass实例的statusItem实例变量中。在此之前,statusItem包含nil

第三,“ManagerClass”对于类来说不是一个很好的名字。注意我是如何在上面说“ManagerClass实例”的。我建议使用“StatusItemManager”;通过这种更改,我可以说“StatusItemManager的实例变量”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4913632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档