Почему я не могу привести к своему подклассу viewcontroller в раскадровке?

У меня есть раскадровка, где у меня есть контроллер окна и контроллер представления. Наиболее разумный способ получить доступ к контроллеру представления в коде - через средство доступа, определенное в контроллере окна-владельца.

class TutorialHUDWindowController: NSWindowController {

    var tutorialHUDViewController: TutorialHUDViewController {
        get {
            return self.contentViewController! as! TutorialHUDViewController
        }
    }

}

Все компилируется нормально, но при попытке доступа к контроллеру представления во время выполнения приложение вылетает с sigabrt:

и консоль регистрирует сообщения об ошибках, подобные этим:

MyApp [6178: 329283] Неизвестный класс TutorialHUDViewController в файле Interface Builder по пути MyApp/Build/Products/debug/Myapp/Contents/Resources/TutorialHUDStoryboard.storyboardc/NSWindowController-scR-w0-00.nib.
MyApp[6178:329283] Не удалось подключить выход (otherView) из (NSViewController) к (otherView): отсутствует сеттер или переменная экземпляра
Не удалось преобразовать значение типа "NSViewController" (0x7fff89ae9410) в "MyApp.TutorialHUDViewController" (0x1001f6a38).
Myapp[6178:329283] Не удалось преобразовать значение типа "NSViewController" (0x7fff89ae9410) в "Thimble.TutorialHUDViewController" (0x1001f6a38).

Я использовал подобный шаблон приведения в других местах моего приложения, и все работает нормально, что происходит не так?

1 ответ

В вашей раскадровке ссылка на пользовательский класс viewcontroller должна также ссылаться на соответствующий модуль, в котором он находится. Либо установите для него значение "MyApp", если оно там, или используйте выбор "Inherit From Target".

Кроме того, вам может потребоваться "очистить" перед повторной сборкой, чтобы очистить любой кэшированный сборник раскадровок.

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