У вас есть ряд проблем.
В ViewControllerB.viewDidLoad
вы присваиваете новый экземпляр ViewControllerA
свойству delegate
. Не делай этого. Ваш метод viewDidLoad должен выглядеть следующим образом:
override func viewDidLoad() {
super.viewDidLoad()
}
В showModal
методе ViewControllerA
должен назначить себя в качестве делегата на ViewControllerB
до того, как ViewControllerB
будет представлен.
func showModal() -> Void {
let cbvc: NSViewController = {
let vc = self.storyboard!.instantiateController(withIdentifier: "ControllerBVC")
as! ViewControllerB
vc.delegate = self
return vc
}()
self.presentAsModalWindow(cbvc);
}
В методе setDetails
просто присвойте строку непосредственно текстовому полю:
func setDetails(s: String) {
msgLabel.stringValue = s
}