为什么子类在框架中不起作用,但扩展在Swift中起作用?

时间:2017-03-02 14:31:38

标签: ios swift xcode uitableview frameworks

我在Swift 3中创建了一个自定义框架,包含扩展(用于String,UIColors等)以及UITableView和UIView的子类。

问题是,当我尝试在另一个项目中使用我的子类时,它不起作用并崩溃。扩展功能完美运行...... 子类不出现在故事​​板中的“可用类”列表中。 (我的类不在Custom Class列表中,Module部分为空)

在我的框架中,我的子类是公共的。我也尝试过open,我遇到了同样的问题。

希望它足够清楚,任何人都可以帮助我:)。

编辑: 重现问题:

  • 创建一个继承自UIView的Custom类:

    public class CustomView: UIView {
        public var name: String = "MyName"
        public func sayMyName() { print("\(self.name)") }
    }
    
  • 创建框架

  • 创建一个新项目,然后导入您的框架。

  • 尝试在故事板中实例化CustomView。

1 个答案:

答案 0 :(得分:0)

首先,您需要确保您的App项目可以访问您的Framework目标。两个选项:

  • 将Framework .xcodeproj文件添加到项目中,以允许根据需要编辑任一目标。请注意,一次只能使用一个Xcode项目。
  • 将Framework .framework文件添加到项目中,然后确保它包含在应用程序的链接框架和库中。

现在您已将其添加到Xcode的应用项目中,您需要这样做:

  • 如果要在代码中访问open类,请使用以下语法:

    import [framework]
    
  • 如果您希望在Storyboard中访问您的UIKit子类,请添加他们的超类控件,然后转到Identity Inspector并(1)选择您的框架作为Module,并将您的子类选择为{{1 }}