Создание выхода для NSProgressIndicator внутри NSToolbar

У меня есть это основанное на раскадровке приложение OSX, которое начинается с NSSplitViewController как это:

это splitViewController имеет два viewControllers: мастер и деталь.

Внутри окна у меня есть NSToolbar, Я притащил NSProgressIndicator к этой панели инструментов и Xcode встроил его в NSToolbarItem,

Теперь мне нужно создать розетку (а не действие, как объяснено в других вопросах stackru) из NSProgressIndicator в какой-то класс. Первый вопрос какой?

Xcode не позволит мне создать розетку. Я пробовал эти варианты:

  1. вытащил из ToolbarItem в masterController файл класса, файл класса detailController и NSSplitViewController учебный класс.
  2. перетаскивается из ToolbarItem в класс делегата.
  3. вытащил из NSProgressIndicator в masterController файл класса, detailController файл класса и NSSplitViewController учебный класс.
  4. перетаскивается из NSProgressIndicator в класс делегата.
  5. перетаскивается из NSToolbarItem и из NSProgressIndicator в первый ответчик оконного контроллера.

Во всех случаях при перетаскивании не появляется окно, позволяющее мне создать розетку.

Ради всего святого, как мне создать такую ​​розетку? В какой класс я его перетащу и как мне это сделать?

1 ответ

Решение

Я предполагаю, что ваша установка больше похожа на это изображение:

BasicCocoaAppWithSplitviewAndToolBar

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

Файл> Новый файл> Класс какао Укажите имя, например "SpaceDogsWindowController", в качестве подкласса NSWindowController.

Затем с помощью выберите значок контроллера окна (синий круг) и выберите Identity Inspector в Xcode. (Ctrl +Alt +3). Укажите имя вашего нового класса в поле "Класс".

Затем попробуйте подключить розетку:

1) Показать помощника редактора

2) Используйте панель переходов, чтобы убедиться, что ваш пользовательский класс виден (он находится в верхней части панели редактора помощника, он должен сказать "Автоматически", и вы можете нажать на него, чтобы затем выбрать новый класс; если он говорит "Вручную", измените его на Автоматический).

3) Если вы перетаскиваете элемент управления, но соединение все еще не предлагается, попробуйте перетащить из контура документа (также показано на снимке экрана).

Затем вы можете редактировать этот индикатор прогресса из других контроллеров представления, которые являются потомками иерархии представления этого окна, используя код, подобный следующему:

    if let windowController = self.view.window?.windowController() as? CustomWindowController {
        windowController.progressIndicator.doubleValue = 0.4
    }

или, в Objective-C, что-то вроде этого:

    CustomWindowController *myWindowControllerSubclass = self.view.window.windowController;
    windowController.progressIndicator.doubleValue = 0.4;

Надеюсь, это поможет.

Другие вопросы по тегам