当我在 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/