[英]NSStatusItem not showing image and title
我正在嘗試制作一個狀態欄項目,如右上方的電池或時間機器指示器。 我的代碼如下
- (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:)];
}
應用啟動時調用此方法。 但是,我在菜單上看不到Item。 它曾經工作過一次,但沒有圖像的相同代碼。
同樣,當我查看Apple的方法時:-setTitle:-setImage:-setTarget:-setAction:所有人都說它們同時可用且已貶值,請看下面的圖像。 還有其他辦法,我可以做到。 我希望單擊該項目時可能會出現一個窗口/面板,該窗口/面板可能已附加到欄中。
您正在將圖像尺寸設置為無意義的值。 NSSquareStatusItemLength
為-2。 這是一個前哨值,而不是實際長度。
您將需要使用systemBar.thickness
來確定用於正方形狀態項的實際大小。
關於不推薦使用的方法,在10.10中, NSStatusItem
具有新的button
屬性。 應該使用它而不是現在不贊成使用的view
屬性(您沒有使用過)。 現在,所有其他不推薦使用的屬性僅包含調用按鈕上相應方法的方法。 使用這些掩護方法是安全的,它們應該仍然有效。
您沒有對狀態項保持強烈引用。 它只是存儲在局部變量中。 如果使用的是ARC,則表示它在-activateStatusBarItem:
方法的末尾釋放,該方法將其從狀態欄中刪除。 因此,您正在快速創建並刪除它。 您應該在實例變量中保持強引用。 +[NSStatusBar statusItemWithLength:]
記錄了保持強烈引用的要求:
接收方不會保留對狀態項的引用,因此您需要保留它。 否則,在重新分配對象后,該對象將從狀態欄中刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.