Как правильно создать подкласс существующей строки - PullRequest
0 голосов
/ 09 декабря 2018

Мне нужна помощь в правильном наследовании существующей строки, чтобы я мог изменить только пользовательский интерфейс, а не функцию.Тип строки, которую я хотел бы поместить в подкласс - TextRow.

Опять же, я только хочу изменить UI , а не функциональность.

Eurek упоминает здесь способсделай это, но я не могу найти правильный способ сделать это.Я хотел бы, чтобы строки выглядели так.enter image description here

Шаги в соответствии с Eureka:


Подклассы ячеек с использованием той же строки

Иногда мыхочу изменить внешний вид пользовательского интерфейса одной из наших строк, но без изменения типа строки и всей логики, связанной с одной строкой.В настоящее время есть один способ сделать это, если вы используете ячейки, которые создаются из nib-файлов.В настоящее время ни одна из основных строк Eureka не создается из nib-файлов, но некоторые пользовательские строки в EurekaCommunity, в частности, PostalAddressRow, который был перемещен туда.

Что вам нужно сделать, это:

  • Создайте файл пера, содержащий ячейку, которую вы хотите создать.
  • Затем установите класс ячейки в качестве существующей ячейки, которую вы хотите изменить (если вы хотите что-то изменитькроме чистого пользовательского интерфейса, вы должны создать подкласс этой ячейки).Убедитесь, что модуль этого класса установлен правильно
  • Соедините розетки с вашим классом
  • Скажите вашей строке использовать новый файл пера.Это делается путем установки переменной cellProvider для использования этого кончика.Вы должны сделать это в инициализаторе, либо в каждом конкретном экземпляре, либо используя defaultRowInitializer.Например:

    <<< PostalAddressRow () {$ 0.cellProvider = CellProvider (nibName: "CustomNib", комплект: Bundle.main)} </p>

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

При выполнении этого необходимо учесть некоторые моменты:

Если вы хотите увидеть пример, взгляните на PostalAddressRow или CreditCardRow, которые в своих примерах используют собственный файл пера.Если вы получаете сообщение об ошибке Unknown class <YOUR_CLASS_NAME> in Interface Builder file, возможно, вам придется создать экземпляр этого нового типа где-то в вашем коде, чтобы загрузить его во время выполнения.Вызов let t = YourClass.self помог в моем случае.


В основном мне нужна помощь в настройке правильного xib / nib и класса для использования в форме.Спасибо.

...