swift - Interface Builder 中自定义类的模块不正确

标签 swift module interface-builder extension-methods tttattributedlabel

当我在 Interface Builder 中使用模块/框架中的一些自定义 UI 类时,一切正常。但是,如果我在我的项目中为此类编写扩展并设置自定义类(在 Interface Builder 中),Interface Builder 会将自定义类的模块设置为我的项目。当我尝试在代码中使用这个自定义类时,Xcode 说:

"Unknown class _TtC9*modulename*18*MyCustomLabel* in Interface Builder file."

一个例子:

  • TTTAtributedLabel 作为单独的模块添加到新项目(或抛出 cocoapods)。
  • 在 Storyboard中添加简单的 UILabel 并将自定义类设置为 TTTAttributedLabel
  • 将 Outlet 添加到代码中并打印 (NSLog) 此标签。

Xcode 写它是 TTTAttributedLabel。

  • 为 TTTAttributedLabel 添加一个空扩展
 extension TTTAttributedLabel{ }
  • 在 Interface Builder 中删除并重新设置标签的自定义类;
  • 打印(NSLog)标签;

然后 Xcode 写警告消息并说我们的标签是 UILabel。

这是一个 Interface Builder 错误,还是我必须在扩展模块之前写一些东西?

信息:swift,xcode6.3-7.3

最佳答案

我遇到了同样的问题,不过我似乎找到了解决方法。

为了避免这个错误,您必须在创建扩展时提供类的全名,包括模块名称。于是就变成了:

extension TTTAttributedLabel. TTTAttributedLabel { }

关于swift - Interface Builder 中自定义类的模块不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36172203/

相关文章:

swift - 使用构造函数和使用 .init 有区别吗?

swift - 使用 Firebase/Xcode 重新验证用户时出错(用于用户电子邮件更新)

javascript - 将 videojs 与 videojs-ima 插件捆绑在一起

cocoa - 无边框 NSButton 单击时变为灰色

ios - Xcode 5 Interface Builder 设计的浅文本在 iOS 6 上显示为常规粗细

ios - 无法从 for 循环内返回值? swift

ios - 本地推送通知可以有可变内容吗?

我可以在 Linux 内核模块中使用 strtok() 吗?

java - 将 Android 模块从库切换到应用程序会导致 "Unable to resolve dependency for :app@debug/compileClasspath"/

xcode - 无法使用Xcode 6创建iPhone xib文件