Как переопределить Копировать и Вставить NSMenuItems для одного View Controller Swift macOS - PullRequest
0 голосов
/ 01 марта 2020

Я пишу приложение macOS с несколькими контроллерами представления, используя раскадровки.

В моем главном контроллере представления я хотел бы иметь возможность копировать и вставлять данные в NSPasteboard. Данные относятся к кнопкам, отображаемым для пользователя, и точные данные, подлежащие копированию, варьируются в зависимости от того, какая кнопка была нажата / выбрана последней.

Я хотел бы иметь возможность переопределить стандартное поведение Скопируйте и вставьте NSMenuItems, когда мой главный View Controller является самым передним (ключевым) окном, но вернитесь к стандартному поведению, когда другие windows находятся на переднем плане, так как все они содержат NSTextFields, которые можно скопировать / вставить в.

Я много гуглил, и переопределение этого поведения не очень хорошо задокументировано. Я могу добиться этого глобально, добавив IBAction в делегат приложения, который я мог бы использовать для вызова функции в зависимости от того, какой View Controller является ключевым, но это не похоже на очень элегантное решение.

В настоящее время мой IBAction в приложении Делегат выглядит следующим образом:

@IBAction func copy(_ sender: Any) {

    if let window = NSApplication.shared.keyWindow {
        if let splitView = window.contentViewController as? SplitViewController {
            if let controlVC = splitView.controlItem.viewController as? ControlViewController {
                controlVC.copyAction(self)
            }
        }
    }
}

Мне не хватает более аккуратного решения?

Спасибо,

Дан

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...