IB Designables дает странное предупреждение при использовании пользовательского класса

Я пытаюсь подклассировать свой UIButton на моей раскадровке с помощью специального класса быстрого действия, который должен показывать кнопку как пользовательскую кнопку гамбургера.

Я получаю это предупреждение и не вижу кнопку Hamburger, которая отображается в Interface Builder, хотя она будет работать периодически.

Пользовательский класс называется NTHamburgerButton, я не знаю, почему строка над символами появляется перед именем класса.

IB Designables: использование класса UIButton для объекта с пользовательским классом потому что класса _TtC6CProjectName17NTHamburgerButton не существует.

Ответ 1

Этот вопрос, кажется, снова получает некоторое внимание, поэтому я дам обновление.

Этот вопрос существовал в смешанном проекте Obj-C и Swift. Таким образом, рассматриваемый класс был классом Swift.

При создании классов Swift в Obj-C вы можете использовать следующий синтаксис

@objc(NTHamburgerButton) public class NTHamburgerButton : UIButton {}

В противном случае в файле {Project-Name} -Swift.h, который создается Xcode, вы увидите, что он генерирует эти уникальные имена классов, подобные этому, из вопроса.

Единственная реальная проблема здесь заключалась в том, что файл NTHamburgerButton.swift не включался в Продукт, который я смотрел на время, но если я переключил цели, он работал нормально. Таким образом, прерывистый вопрос.

Ответ 2

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

Я просто обновляю все представления введите описание изображения здесь

Это работает для меня. Надеюсь, он вам тоже поможет.

Ответ 3

Для меня были необходимы оба решения Codermonk и specialvict, но недостаточно.

Мне также пришлось включить Inherit From Target в построителе интерфейсов:

введите описание изображения здесь

Это помогло мне.