Привет, я видел, как этот вопрос задавали несколько раз, но пока нет определенного ответа, поэтому я создал его для xcode 7 и swift2 (что, возможно, все равно немного изменило ситуацию).
Я создал проект с использованием Xcode 7 и Cocoa OSX Storyboards + swift2, поэтому мой проект начался с NSWindowController, который подключается к NSViewController (как и ожидалось!). Я добавил NSToolbar к своему оконному контроллеру и добавил NSButton на панель инструментов. Я изменил свой NSViewController на один из новых NSSplitViewController, который связан с тремя NSViewController и отображает их представления по горизонтали - с вертикальными разделителями - (аналогично макету, который вы видите в фото приложение или страницы в Йосемити +). Моя конечная цель будет заключаться в том, чтобы кнопка на моей панели инструментов показывала и скрывала первое разделение.
Насколько я понимаю, и я ожидал, что для достижения этого я должен создать действие в NSSplitViewController, которое изменяет ограничения автоматической компоновки более или менее так, как они работают здесь: Как свернуть и развернуть представление в приложении для Mac?.
А затем каким-то образом свяжите это действие с NSButton, который находится на панели инструментов ... который находится в NSWindowController (далеко вверх и изолирован в иерархии) ...
Я уже ответил на другие вопросы о NSToolbar и раскадровках и не смог достичь своей цели:
- Видео на YouTube: Программирование какао L17 - NSToolbar, которое, как я нашел, является наиболее подходящим решением проблемы. , но его метод не работает для раскадровок, а только для создания вашего собственного файла xib.
- В этом вопросе: Как использовать NSToolBar в Xcode 6 и Storyboard? Один человек предлагает создать ссылку, используя первый ответ и ожидая, что все подключится во время выполнения (что выглядит немного хитроумно и не так, как Apple, я думаю ...). Второй человек предложил создать переменную контроллера представления в NSWindowController и управлять ее свойствами оттуда ... но опять же, немного хитроумно.
- Один последний комментарий, который я видел в этом вопросе, который кажется лучшим способом решения проблемы (но все же не так хорош, как я предполагаю), - это добавить NSObjectController в док каждой сцены и когда сцена загружается, установите значения объектов в контроллер другой сцены. Это действительно лучший способ двигаться дальше? Если да, то как я могу этого добиться?
Apple упомянула (снова) в WWDC15, что они создали раскадровки для osx и контроллер разделения представления, который владеет контроллерами представления, чтобы вы могли перемещать свою логику и работать с конкретным контроллером представления, поэтому я ожидал бы делать все с внутри моего контроллера с разделенным представлением, поскольку это цель, которую нужно изменить.
Кто-нибудь знает, как добиться этого из самого контроллера представления? Мне действительно не удалось найти способ подключить к нему свой ToolBarItem.

