0

У меня есть раскадровка, содержащая основное окно (с соответствующим классом MainWindowController) и основной вид (, с соответствующим классом MainViewController). Для некоторых функций я пытаюсь установить делегат из NSSplitView, содержащийся в представлении, в класс MainWindowController.Невозможно изменить делегата на NSSplitView

Без связи с IB, делегат NSSplitView уже установлен на MainViewController при запуске приложения. Я могу получить ссылку на MainWindowController, но при попытке установить делегат в контроллер окна (который не осуществлять NSSplitViewDelegate), я получаю следующее:

*** Assertion failure in -[NSSplitView setDelegate:], /Library/Caches/com.apple.xbs/Sources/AppKit/AppKit-1404.34/AppKit.subproj/NSSplitView.m:600 

Это также происходит, если я попытаюсь установите делегат на nil.

Кто-нибудь знает, почему это может быть так, существуют ли ограничения на настройку делегатов, и есть ли способ использовать IB для определения делегата элемента в представлении другому контроллеру?

Спасибо.

ответ

1

У меня нет ссылки для этого, но я уверен, что разделенный вид и контроллер разделенного вида не должны быть разделены. К счастью, NSSplitViewController отражает методы делегатов, давая вам шанс вмешаться. Поэтому не должно быть причин для изменения делегата split view.

+1

Да, пенни падает. В конце концов, какой смысл использовать NSSplitViewController, если разделенное представление не использует его? В конце концов, речь шла о выполнении вызовов протокола в контроллере просмотра и контроллере окон, а затем вызывая общий метод для их обработки. (В сценарии требовалось разделенное представление в строке заголовка, чтобы отслеживать разделенное представление в главном представлении). Спасибо за помощь. –

Смежные вопросы