[英]Menubar with Storyboard - validateMenuItem not get called
我正在嘗試使用情節提要設置菜單欄應用程序,但未調用我的validateMenuItem
方法。
我會盡力解釋我的所作所為。 首先,我在應用程序場景中拖動了一個菜單項。 然后是我的MenuController的一個對象。 創建一個MenuController(MenuController.swift)並用代碼填充。 回到我的情節提要中,將菜單委托設置為MenuController,將MenuController出口設置為Menu。 (我不確定我是否正確設置了代表。)
當我啟動應用程序時,出現菜單圖標,並且第一個項目標題設置為test。 但是,當我單擊圖標時, validateMenuItem
方法不會被調用。
MenuController.swift
import Cocoa
class MenuController: NSObject {
var statusItem = NSStatusBar.systemStatusBar().statusItemWithLength(-1)
@IBOutlet weak var statusMenu: NSMenu!
@IBOutlet weak var item1: NSMenuItem!
override func awakeFromNib() {
print("awakeFromNib")
self.item1.title = "Test"
let icon = NSImage(named: "menubarIcon")
statusItem.image = icon
statusItem.menu = statusMenu
}
override func validateMenuItem(menuItem: NSMenuItem) -> Bool {
print("validateMenuItem")
return true
}
}
故事板菜單代表
(來源: picr.de )
情節提要MenuController代表
(來源: picr.de )
有人知道嗎?
來自奧地利的問候!
菜單/ UI驗證機制不查詢菜單的委托,而是使用項目的目標來確定啟用狀態。
如果未顯式設置目標,則它將遍歷響應者鏈。
要獲得基本驗證,您必須確保設置了以下內容:
validateUserInterfaceItem:
基本實現對於帶有一個名為test的動作選擇器的項目來說可能類似於以下內容:
func validateUserInterfaceItem(anItem: NSValidatedUserInterfaceItem) -> Bool
{
if anItem.action() == Selector("test:") {
print("validating item \(anItem)")
return true
}
return true
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.