2015-06-22 2 views
11

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

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

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

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

+0

Покажите нам код –

+0

Аналогичные проблемы описаны здесь: http://stackoverflow.com/questions/26674111/ib-designable-ibinspectable-interface-builder-does-not-update. –

+0

Кажется, что он работает с тех пор, как я добавил некоторые атрибуты IBInspectable к настраиваемому классу, мне не нужно, чтобы они были инспектируемыми, но по крайней мере он заставляет интерфейс Builder работать как ожидалось – Codermonk

ответ

6

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

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

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

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

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

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

4

Я сталкиваются с той же проблемой, и я нашел ответ от другого вопроса: enter link description here

Я просто Refresh All Views enter image description here

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

2

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

Я также должен был включить наследоваться от Target в Interface Builder:

enter image description here

Это сделал трюк для меня.

+0

Я импортировал класс IBDesignable в cocapods, и это был всего лишь класс ObjC с быстрым заголовком внутри, вызывающим одно и то же предупреждение, и чтобы он работал, мне пришлось выбрать импортированный класс в комбо-модуле, чтобы он работал –

Смежные вопросы