Как загрузить подкласс View Controller с кончиком, не указывая имя кончика в виде строки?

Когда вы загружаете подкласс UIViewController программным способом, любой кончик, связанный с этим ViewController, не будет загружен, если вы назвали любой из файлов с именем, отличным от вашего подкласса.

Единственный способ загрузить перо автоматически, не передавая имя строки инициализатору, это убедиться, что x.nib а также class.swift имеет то же имя, что и SubClass,

Это можно обойти?

2 ответа

Решение

Согласно документации, вы можете загрузить контроллер представления на основе пера, не называя его точно так же. Хотя сопоставление имен является наиболее распространенным способом сделать это, есть второй случай, который должен работать даже со Swift.

Из документации:

Если вы используете файл пера для хранения представления вашего контроллера представления, рекомендуется явно указывать этот файл пера при инициализации вашего контроллера представления.

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

  1. Если имя класса контроллера представления заканчивается словом "Controller", как в MyViewController, он ищет файл пера, имя которого соответствует имени класса без слова "Controller", как в MyView.nib.

  2. Он ищет файл пера, имя которого совпадает с именем класса контроллера представления. Например, если имя класса MyViewController, он ищет файл MyViewController.nib.

Перо будет загружаться автоматически только в том случае, если ОБА и класс-файл имеют то же имя, что и класс...

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