【发布时间】:2017-03-28 21:06:31
【问题描述】:
我正在使用 CocoaPods 导入一些东西。现在我正在尝试使用TTTAttributedLabel,它是UILabel 的丰富子类,允许点击URL 等。
现在,我无法让我的应用识别出我的标签实际上是 TTTAttributedLabel 的实例,而不是常规的 UILabel 的实例。
在我的 .xib 中,我将一个普通的 UILabel 拖到我的视图中,然后像这样编辑标签的类:
它确实为我自动完成了名字,所以我知道它知道这个类。然后,我将连接从 xib 拖到视图的类,如下所示:
它自动将自己指定为TTTAttributedLabel,因为它识别出它就是这样,否则它会说UILabel。
由于我在podfile 中指定了use_frameworks!,我必须导入该类,所以在我的视图类的顶部,我有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 吗?让它无法知道子类,还是什么..?
【问题讨论】:
-
看看你的控制台;您是否收到警告“无法识别的类 TTTAttributedLabel 在。在文件中”或类似的东西? nib 文件中的自定义类下方显示的是什么模块?
-
@Paulw11 哦,该死的,你是对的!我什至没有注意到。它说
Unknown class _TtC16MyApp18TTTAttributedLabel in Interface Builder file.。这是什么意思? -
您可以轻松看到 TTTAttributeLabel 方法的自动完成的原因是:您已将其声明为 TTTAttributedLabel。即使该变量的实现是 UILabel,编译器仍会将其视为 TTTAttributedLabel,因此您不会收到编译器的警告。当然,您可以将 UILabel 分配给 TTTAttributedLabel,因为这是超类。
-
您是否尝试过清理整个项目。退出 xCode 并再次执行 pod install 和 pod update?确保 pod 包含在您的构建目标中。现在重新打开项目并首先构建它(不需要构建和运行)。现在前往您的 xib 文件。选择 UILabel 的类,然后按 Enter!现在单击界面构建器中的其他位置以确保使用了类更改。保存 xib 并再试一次。
-
@Lepidopteron 仍然无法正常工作,可悲的是.. 当我用谷歌搜索
Unknown class .. in Interface Builder file.时,我收到了很多修复 IB 中的Module的建议,但模块是正确的。它说“当前 - 我的应用程序”。在下拉列表中,我可以选择“MyApp”,没有区别。我尝试在两个字段中都按回车键,我已经从我的 podfile 中删除了 TTTAttributedLabel 并现在来回重新安装了 pod。我已删除标签并重新添加它们。我已经清理了派生数据,重新启动了 xcode 并重新启动了我的计算机。现在是时候让我重新振作起来了,所以我明天再试一次。
标签: ios xcode cocoapods tttattributedlabel