无法从我自己的Pod加载NIB

Her*_*dám 3 frameworks bundle xib ios cocoapods

我的Pod框架中有一个CalendarCell.xib和一个CalendarCell.swift UIView子类.CalendarCell.swift具有连接到其视图的出口.在运行时我收到此错误:

无法在捆绑中加载NIB:'NSBundle(已加载)',名称为"CalendarCell"

在我的podspec文件中,我创建了一个bundle资源:

s.resource_bundles = { 'Resources' => ['MyFramework/**/*.{xib,xcassets}'] }
Run Code Online (Sandbox Code Playgroud)

如果我安装我的Pod我可以看到xib文件,但它崩溃了,现在似乎xib文件和它的swift对应物在不同的包中.

任何帮助,将不胜感激!

Nic*_*chi 10

你是对的,xib存储在一个不同的包中.您需要找到xibs包的路径并从该包中加载所有xib,而不是从主包中加载它们.

要在Swift 3中找到捆绑包的路径:

let bundle = Bundle(for: YourClass.self)
Run Code Online (Sandbox Code Playgroud)

所以,你必须UINib从该捆绑包加载:

let nib = UINib(nibName: "YourXibName", bundle: bundle)
Run Code Online (Sandbox Code Playgroud)

并将其注册到您的UITableView/ UICollectionView,如果您为此需要它:

self.tableView.register(nib, forCellReuseIdentifier: "cellIdentifier")
Run Code Online (Sandbox Code Playgroud)

  • 出于某种原因,我无法使你的解决方案有效,但我找到了正确的方法.`let bundle = Bundle(for:CalendarCell.self)让nib = UINib(nibName:"CalendarCell",bundle:bundle)`谢谢你的帮助,救了我的一天:) (2认同)