【问题标题】:Incorrect module for custom class in Interface BuilderInterface Builder 中自定义类的模块不正确
【发布时间】:2016-07-10 09:24:03
【问题描述】:

当我在模块/框架的 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

【问题讨论】:

    标签: swift module interface-builder extension-methods tttattributedlabel


    【解决方案1】:

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

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

    extension TTTAttributedLabel. TTTAttributedLabel { }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-08-22
      • 1970-01-01
      • 2019-06-16
      • 2014-03-28
      • 1970-01-01
      • 2013-02-01
      • 2010-12-17
      相关资源
      最近更新 更多