1

У меня есть базовое приложение Cocoa, чтобы опробовать Swift и Storyboards.Xcode OS X Storiesboards: Как получить ссылку на верхний уровень «оконный контент»?

Приложение состоит из 3 основных видов, которыми управляет NSTabViewController, что снова связано с отношением «содержимое окна» главного окна.

Я добавил NSSegmentedControl на панель инструментов окна, чтобы переключаться между 3-мя вкладками.

В контроллере главного окна я добавил метод действия для элемента панели инструментов, чтобы переключаться между вкладками, но я не могу понять, как получить ссылку на контроллер представления табуляции, чтобы фактически переключать вкладки.

Я попытался добавить свой метод действий в контроллер представления табуляции, но это не работает, потому что контроллер представления табуляции может не находиться в цепочке ответчиков, если он содержит пустой вид (это ошибка?).

Как обходной путь, я перевернул viewDidAppear() в контроллере представления вкладок. Там я получаю дескриптор view.window.windowController и устанавливаю ссылку на «self» в переменной экземпляра. Это работает, но не кажется правильным. Должен быть способ получить от контроллера окна до его контроллера содержимого ...

Контроллеры окон и контроллеров виджетов живут в разных сценах, и я не могу их подключить через IBOutlet. Кроме того, ни один из методов segue не вызывается в оконном контроллере для отношения «содержимое окна».

Storyboard

ответ

0

Я в основном ОС X парень, и я новичок в раскадровки себя, но я думаю, что вам нужно сделать, это:

  1. Написать

    - (IBAction) someResponse: (id) отправитель {}

метод в контроллере вида, который планирует для обработки действия.

  1. Проводник управления, чтобы он отправил свое действие первому ответчику. Если ваш контроллер просмотра находится в цепочке ответчиков, он получит его.
+0

Спасибо за ваш ответ. Моя проблема в том, что контроллер представления табуляции, который реализует действие, не находится в цепочке ответчиков, если действие инициируется элементом панели инструментов. Кроме того, мне не удалось выяснить, как подключать выходы к сценариям просмотра (простое представление мастера/детали). Пока я вернулся к простым старым файлам nib. – Mark

+0

Это kludge, но я реализую IBAction в своем WindowController и передаю его. У меня была аналогичная ситуация с SplitViews. Если вы поместите IBAction в ViewController, это будет вызвано только в том случае, если ViewController находится в фокусе. –

+0

Вы не подключаете выходы через сцены в раскадровке, насколько я могу судить. Контроллер, который владеет дополнительным контроллером, передает все данные, которые ему нужно передать через «prepareForSegue», а затем вы передаете свои данные через другие механизмы, такие как уведомления или делегаты.(Я новичок в раскадровки, я только занимался iOS, и Hillegass не верит в них, так что только сейчас я их пробую) –

0

Я знаю, что я невероятно поздно, и, возможно, не существует, когда этот вопрос был размещен, но для тех, кто приземлился здесь, то NSWindowController имеет contentViewController: NSViewController? свойство (добавляемые в MacOs 10.10, так что вокруг конца 2014 Думаю).

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

  • Нет связанных вопросов^_^