4

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

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

一个例子:

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

Xcode 写它是 TTTAttributedLabel。

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

Xcode 会写警告信息并说我们的标签是 UILabel。

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

信息:迅速,xcode6.3-7.3

4

1 回答 1

2

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

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

extension TTTAttributedLabel. TTTAttributedLabel { }
于 2016-06-21T09:22:28.927 回答