NSToolbar NSPrintItem не вызывает func printDocument SWIFT 4
Я пытаюсь включить значок "Печать" на панели инструментов NSToolbar - печать выполняется из меню "Файл" и с помощью обычного действия кнопки, но я не могу включить его с панели инструментов (если я не создаю свой собственный значок изображения) - но я хочу используйте NSToolbarPrintItem. Я следовал примеру в Apple ( https://developer.apple.com/library/content/samplecode/ToolbarSample/Introduction/Intro.html), но не могу получить элемент панели инструментов для вызова:
func printDocument(_ sender: AnyObject) {
print("hi!")
}
Я перешел по той же ссылке и вижу, что цель устанавливается на себя, то есть контроллер окна, который имеет параметр NSToolbarDelegate:
"NSToolbarPrintItem NSToolbarItem отправит сообщение -printDocument: своей цели. Так как мы связали его цель с самим собой в -toolbarWillAddItem:, мы вызываемся здесь, когда пользователь пытается печатать, щелкая элемент панели инструментов".
class LogWindowController: NSWindowController, NSToolbarDelegate {
Я подтвердил, что этот вызов вызывается при изменении всплывающей подсказки, но значок "Печать" на панели инструментов по-прежнему неактивен:
func toolbarWillAddItem(_ notification: Notification) {
let userInfo = notification.userInfo!
let addedItem = userInfo["item"] as! NSToolbarItem
let itemIdentifier = addedItem.itemIdentifier
if itemIdentifier.rawValue == "NSToolbarPrintItem" {
addedItem.toolTip = "Print your document"
addedItem.target = self
addedItem.isEnabled = true
addedItem.validate()
}
}
Какие-нибудь мысли?
ОБНОВЛЕНИЕ: я понял это. В SWIFT 4 вам необходимо использовать @Objc перед функцией printDocument:
@objc func printDocument(_ sender: AnyObject) {
print("hi!")
}