将 xib 文件添加到 Swift 包

Add a xib file to a Swift Package

我想开始使用模块化代码与新的 Swift 包管理器集成 Xcode 11.

问题是我似乎无法将任何类型的 UI 文件添加到我的新包中。我只需要添加一个 xib 文件。

这是如何实现的?

目前 Swift 包仅支持源代码,因此您不能将 xib 文件添加到包中。阅读缺少什么?以下文章中的部分:

Creating Swift Packages in Xcode

更新

Xcode 12 允许您将不是源代码文件的文件添加到 Swift 包中。我还没有创建 Swift 包,所以我无法提供有关如何将 xib 文件添加到 Swift 包的详细说明。但正如@ffritz 在对此答案的评论中提到的那样,Apple 的文档中有一篇关于在 Swift 包中捆绑资源的文章。

Bundling Resources with a Swift Package

感谢上面的 Marks 回答和他分享的 Apple 文档,我能够解决在我的 Swift 包中加载 .xib 文件的问题。我会在这里为以后的围观者解释一下我的步骤。

  1. 将新 Swift 包中的所有 .xib 文件移动到名为 Resources 的文件夹中(位于 /Sources/PackageName/Resources 位置)

  2. 更改我拥有的以编程方式加载这些 .xib 文件的任何代码以包含模块包。例如:

     super.init(nibName: "MyViewController", bundle: nil) //Old way of initialising
    
     super.init(nibName: "MyViewController", bundle: Bundle.module) //New way of initialising
    

当您使用资源创建 Swift 包时 Bundle 获得每个包的自动静态标识符,例如,名为 Moon 的包将通过 Bundle.moon[=16= 访问]

例如,要在 Moon 中使用名为 Crater.xib 的 XIB 实例化一个单元格,您将使用

let nib = UINib(nibName: "Crater", bundle: Bundle.moon)