Надеюсь, этот ответ еще не поздно.
Работа делегата заключается в том, что вы сообщаете отправителю, кому отправлять сообщения. Проблема в том, что вы создали новый экземпляр WindowController
и зарегистрировались в качестве его получателя. Проблема в том, что новый экземпляр WindowController
НЕ тот, который отправляет действия нажатия кнопки.
Чтобы это работало, вы должны зарегистрировать свой ViewController
в единственном экземпляре WindowController
.
Вместо того, чтобы делать
let vc = WindowController()
vc.viewDelegate = self
Вам нужно найти фактический экземпляр Window Controller и зарегистрироваться на него. Измените приведенный выше код на:
(self.view.window?.windowController as! WindowController).delegate = self
И все должно работать без нареканий.