Xcode NSStatusItem不显示图像和标题
我试图制作一个状态栏项目,比如右上角的电池或时间机器指示器。我的代码如下Xcode NSStatusItem不显示图像和标题,xcode,macos,Xcode,Macos,我试图制作一个状态栏项目,比如右上角的电池或时间机器指示器。我的代码如下 - (void)activateStatusBarItem:(id)object{ NSStatusBar *systemBar = [NSStatusBar systemStatusBar]; NSStatusItem *theItem = [systemBar statusItemWithLength:NSVariableStatusItemLength]; NSImage *statusBarIcon = [NS
- (void)activateStatusBarItem:(id)object{
NSStatusBar *systemBar = [NSStatusBar systemStatusBar];
NSStatusItem *theItem = [systemBar statusItemWithLength:NSVariableStatusItemLength];
NSImage *statusBarIcon = [NSImage imageNamed:@"icon-sleep.png"];
statusBarIcon.size = CGSizeMake(NSSquareStatusItemLength, NSSquareStatusItemLength);
[theItem setImage:statusBarIcon];
[theItem setTitle:@"abc"];
[theItem setTarget:self];
[theItem setAction:@selector(showHUD:)];
}
此方法在应用程序启动时调用。然而,我在菜单上没有看到它们。它确实工作过一次,在没有图像的情况下使用相同的代码
此外,当我研究苹果公司的产品和方法时:
-片名:
-setImage:
-设置目标:
-设定动作:
所有人都说它们同时可用和贬值,请看下图。还有别的办法吗,我能做到。我希望在单击项目时显示一个窗口/面板,可能会连接到工具栏
您正在将图像大小设置为无意义的值<代码>NSSquareStatusItemLength为-2。这是一个哨兵值,不是实际长度 您需要使用
systemBar.thickness
来确定方形状态项的实际大小
关于不推荐使用的方法,在10.10中,NSStatusItem
有一个新的按钮
属性。应该使用此属性,而不是现在不推荐使用的view
属性(您没有使用)。所有其他不推荐使用的属性现在都只是通过按钮上相应方法调用的cover方法。使用这些覆盖方法是安全的,它们应该仍然有效
您没有保留对状态项的强引用。它只是存储在一个局部变量中。如果您使用的是ARC,这意味着它将在-activateStatusBarItem:
方法的末尾释放,该方法将其从状态栏中删除。因此,您正在快速地创建和删除它。您应该保留一个强引用,可能在实例变量中。对于+[NSStatusBar statusItemWithLength:
,记录了保留强引用的要求:
接收方不保留对状态项的引用,因此您需要保留它。否则,对象将在解除分配时从状态栏中删除
谢谢,我可以用button属性做我需要的一切。但是,请告诉我应该如何使用视图属性,这样我以后就不会犯类似的错误了。仅仅使用target-action方法使图标响应单击并使用panel controller对象从.xib文件打开面板是不够的。从来没有必要使用
视图
属性。它适用于需要进行自定义绘图或事件处理的情况。