Как связать Storyboard UIViewController с моим пользовательским классом UIViewController?

Я запускаю Xcode 7 beta 5, и у меня есть раскадровка с контроллером панели вкладок с 4 элементами. Каждый элемент является UIViewController. Я создал собственный класс, который является подклассом UIViewController.

Когда я перехожу к раскадровке, щелкните один из UIViewControllers, перейдите в Identity Inspector, щелкните пользовательский класс и попробуйте назвать свой пользовательский класс, который он говорит:

"Launch screens may not set custom classnames"

Я делаю что-то неправильно? Я думал, что это способ связать UIViewController раскадровки с вашим пользовательским контроллером представления.


person thecodingmate    schedule 24.08.2015    source источник


Ответы (5)


Проблема в том, что вы пытаетесь назначить собственный класс для экрана запуска. Основная функция экранов запуска — отображать вид до тех пор, пока приложение не загрузится (не реализовывать логику приложения). Вы должны создать новый контроллер представления, представляющий объект в раскадровке (он должен отображаться после загрузки приложения) и назначить ему собственный класс.

person Daumantas Versockas    schedule 24.08.2015
comment
Создать новую раскадровку? - person thecodingmate; 24.08.2015
comment
Лучшей практикой является выделение экрана запуска в файле xib. Вы должны создать LaunchScreen.xib и установить его в настройках приложения -> Общие -> Значки приложений и изображения запуска (файл экрана запуска: LaunchScreen.xib). Вся логика представлений приложения должна быть реализована в раскадровке, которая также должна быть предоставлена ​​в настройках приложения -> Общие -> Информация о развертывании (Основной интерфейс: Main.storyboard). Таким образом, вас не будут смущать экраны запуска и представления. - person Daumantas Versockas; 24.08.2015
comment
Кроме того, вы не должны называть свою основную раскадровку LaunchScreen.storyboard. Раскадровка не предназначена для реализации одного представления. Это сделано для реализации целостной логики представлений и взаимодействий. Вам лучше назвать его Main.storyboard. Экран запуска представляет собой единый вид. Для представления единого представления есть .xib файла. Для экрана запуска рекомендуется назвать его LaunchScreen.xib - person Daumantas Versockas; 24.08.2015
comment
В порядке. По какой-то причине мне дали раскадровку для экрана запуска по умолчанию. Я получаю это сейчас. Всем спасибо! - person thecodingmate; 24.08.2015

Как говорится в сообщении об ошибке, пользовательские классы теперь запрещены на экранах запуска в Xcode 7. См., например. здесь

person JonEasy    schedule 24.08.2015
comment
Я смог создать новую раскадровку, добавить к ней VC, установить для нее собственный класс, а затем указать это как запуск раскадровки. Однако, похоже, он игнорирует указанную мной настройку ориентации. Но создание подклассов таким образом может действительно работать. Пробовал использовать Xcode 9, iOS 11.x. - person Jonny; 20.04.2018

Если вы пытаетесь настроить свой экран-заставку, вы можете создать свой первый контроллер представления в качестве экрана-заставки, а затем установить там собственный класс.

Чтобы сообщить системе, что не нужно загружать экран запуска, просто измените настройки, как указано ниже...

Вкладка «Общие» -> «Файл экрана запуска» -> выберите «Основной» (в основном это основная раскадровка).

person Rohit Kumar    schedule 24.08.2015

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

person Rukshan Marapana    schedule 24.08.2015

Это сработало для меня. Я удалил LaunchScreen.storyboard и в main.storyboard добавил пользовательский класс, который позже не выдавал никаких ошибок. Надеюсь, это поможет кому-то еще.

person UsamaMan    schedule 21.11.2015