Невозможно создать подкласс UILabel: нераспознанный селектор отправлен в UILabel
Я использую CocoaPods для импорта некоторых вещей. Щас пытаюсь использовать TTTAttributedLabel
, который является богатым подклассом UILabel
, с учетом URL-адреса и т. д.
Теперь у меня проблемы с тем, чтобы мое приложение распознало, что мои ярлыки на самом деле являются TTTAttributedLabel
и не регулярно UILabel
"S.
В моем.xib я перетащил обычный UILabel
на мой взгляд, затем отредактировал класс метки следующим образом:
Это действительно автозаполнение имени для меня, так что я знаю, что знает о классе. Затем я перетащил соединение из XIB в класс представления, например так:
Он определяет себя как TTTAttributedLabel
автоматически, потому что он признает, что это то, что он есть, иначе он сказал бы UILabel
,
Так как я указал use_frameworks!
в моем podfile
, Я должен импортировать класс, поэтому в верхней части класса моего представления у меня есть import TTTAttributedLabel
,
Теперь, когда я пытаюсь использовать метку, она автоматически заполняется следующим образом: С правильным классом, TTTAttributedLabel
, Но когда я делаю это:
print("labBody: ", labBody)
распечатывает это:
labBody: <UILabel: 0x7fa754c86710; frame = (16 459; 42 21); text = 'Label'; opaque = NO; autoresize = RM+BM; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x60000029cf20>>
думая, что это UILabel. Если я попытаюсь получить доступ к любому из TTTAttributedLabel
-специфичные переменные или функции, он все еще автоматически заполняет их для меня:
labBody.enabledTextCheckingTypes = NSTextCheckingResult.CheckingType.link.rawValue
Но при использовании их во время выполнения происходит сбой всего приложения, говоря следующее:
-[UILabel setEnabledTextCheckingTypes:]: unrecognized selector sent to instance 0x7fdfc7c59300
Я слепой? Почему это не работает? Это то, что я всегда делал. У меня может быть трудный вторник.. Я попробовал все обычные вещи, чистку, удаление производных данных, перезапуск Xcode, удаление приложения с устройства перед повторным запуском..
Я даже использовал TTTAttributedLabel
раньше я знаю, что это работает. Единственное, что ново, это то, что я впервые использую use_frameworks!
.. Это влияет на.xib? Делая невозможным узнать о подклассе, или что-то..?
1 ответ
Я понятия не имею, почему это сработало, но я предполагаю, что это как-то связано с тем, что этот модуль находится в Objective-C, а также связан с привязкой и загрузкой Obj-C.
В любом случае, все, что мне нужно было сделать, - это обернуть объект в новый локальный класс. а затем измените класс моих меток в.xib-файле на этот класс вместо TTTAttributedLabel
(и выходы в классе моего взгляда, очевидно).
Не нужно ничего делать, кроме создания этого класса, он не должен содержать ничего.
Я читал кое-что об установке флага, как load ObjC
-флаг, я не пробовал. Я думал, что это решение может также загрузить много других вещей Object-C, которые мне не нужны / не хотят загружаться..