Класс раскадровки Xcode не имеет модуля - PullRequest
0 голосов
/ 14 марта 2019

У меня есть проект с двумя целями A и B.

Когда я открываю свою раскадровку и выбираю одну конкретную сцену и выбираю «Инспектор идентификации»> «Пользовательский класс»> «Модуль»,

есть одна пустая запись в раскрывающемся списке (раскрывающийся список не отображает A или B).Когда я выбираю пустую запись, раскрывающийся список показывает «Нет».Это проблема, потому что она вызывает сбой моей программы при попытке использовать сцену.

Если я выберу «Унаследовать модуль от цели», правильная цель отобразится в «Инспекторе идентификации»> «Пользовательский класс»> «Модуль», однако моя программа все равно будет аварийно завершать работу при попытке использовать сцену.

Сам класс находится в опережении типа в текстовом поле «инспектор идентификации»> «пользовательский класс»> «Класс».

Имя класса - SWRevealController.m (которыйявляется файлом obj-c), в то время как большая часть моего проекта выполняется быстро.

A и B отображаются как выбираемые в любой другой сцене в разделе «инспектор идентификации»> «пользовательский класс»> «Модуль».Я также могу выбрать «наследовать модуль от цели» для этих сцен, и программа не падает.

Другие вещи, которые я пробовал: * ручное удаление и повторное добавление SWRevealController.m в «Фазы сборки»>>Скомпилированные источники * создают новую раскадровку и устанавливают контроллеры представления с нуля.

Сам main.storyboard является частью обеих целей.

1 Ответ

0 голосов
/ 14 марта 2019

ОК, то, что я сделал, сработало для меня (чего я не должен был делать, но это работает) - это 4 вещи.

  1. Зайдите в SWRevealViewController.m и добавьте

    @ class SWRevealViewControllerSegueSetController;

Чтобы сделать контроллер сегмента доступным для шага # 2.

  1. Создайте файл swift, который наследуется от классов Objective-C (и больше ничего не делаете)

    Фонд импорта

    конечный класс MyRevealViewController: SWRevealViewController {

    }

    финальный класс MyRevealViewControllerSegueSetController: SWRevealViewControllerSegueSetController {

    }

  2. Войдите в мою раскадровку и измените класс с SWRevealViewController на MyRevealViewControllerSegueSetController. На этом этапе различные цели A и B отображаются в раскрывающемся списке «Инспектор идентификации»> «Пользовательский класс»> «Модуль».

  3. Мне нужно было изменить классы Segue, используемые в моих раскадровках, с SWRevealViewControllerSegueSetController на MyRevealViewControllerSegueSetController

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...