我一直試圖獲得一個NSPopover加載NSViewController從NSStatusItem顯示,理想情況下在swift中使用segue幾個小時試圖失敗。NSPopover中的NSViewController通過從NSStatusItem中的NSStatusItem中快速10.10
我已經設法從DP3中新的NSStatusItem.button實現中正確地觸發事件,但我無法解決如何以編程方式向NSButton中添加一個segue。我有工作,到目前爲止是代碼...
class AppDelegate: NSObject, NSApplicationDelegate {
var statusItem : NSStatusItem
init() {
statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(CGFloat(-2))
// When the bug is fixed, replace the line above with this line.
//statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(CGFloat(NSSquareStatusItemLength))
}
override func awakeFromNib() {
SetupStatusItem()
}
func SetupStatusItem() {
statusItem.title = nil
var icon = NSImage(named: "Moon_Full.png")
icon.size = NSSize(width: 16, height: 16)
icon.setTemplate(true)
statusItem.button.image = icon
statusItem.button.action = "StatusItemClicked"
}
func StatusItemClicked() {
if (statusItem.button.appearsDisabled)
{
statusItem.button.appearsDisabled = false
println("Hide NSPopover here")
}
else
{
statusItem.button.appearsDisabled = true
println("Show NSPopover here")
}
}
}
這將把NSStatusItem,它在光與暗模式正確的顏色,並記錄正確的信息和活動和非活動狀態之間切換。
我缺少的seceret醬是如何以編程方式將狀態添加到statusItem.button,以便它可以執行我點擊時從NSStatusItem中構建的NSPopover中的NSViewController的加載。
編輯:
我試圖在一個視圖控制器
A中的一些與香草NSButton場景)掛接在界面生成一個賽格瑞...作品
B)掛鉤一個在代碼中繼續並觸發它......可行,但您仍然必須在界面構建器中建立連接,以便解決問題。 (這是API新10.10)
performSegueWithIdentifier("ShowPop", sender: sender)
C)試圖彈出視圖控制器在同一故事板,是錯誤發生的地方。
var newView = NSView(frame: sender.frame)
var popupViewController = ViewController(nibName: "PopupViewController", bundle: NSBundle(identifier: "PopupViewController"))
presentViewController(popupViewController,asPopoverRelativeToRect: sender.frame, ofView: newView,preferredEdge: NSRectEdge.max,behavior: NSPopoverBehavior.Transient)
2014年7月17日08:57:55.238酥料餅[5116:2277209] - [NSNib initWithNibNamed:束:]無法加載nibName: PopupVIewController在束(空)。
(我曾嘗試命名在IB的NIB和對罵以及使用空。
d)相同的代碼工作,如果我創建一個單獨的廈門國際銀行,但我的選擇是使用新
我創建了一個樣本項目的故事板如果可能的話,我想用新的標籤視圖作爲容器......(在Objective-C,以確保這不是一個問題,迅速)
非常感謝您的幫助。
只是一個快速提示:你應該名稱以小寫字母的方法。 UpperCamelCase用於類型。 – radex
這就是我的C#開發年。 –