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!")
}

0 ответов

Другие вопросы по тегам