在项目要使用Coding管理,进行模块化的过程中,遇到了不能打包xib问题,因为他找不到文件了,经搜索各种最后解决,需要把xib生成nib文件才可以,并且内部代码需要特殊处理。
-
问题:
1).首先xib文件会使pod打包失败,故需要把xib转nib。
2).其次注册xib的方法需要进行整改,否则工程找不到目标文件。
-
解决方案:
注册Xib Cell方法需改成注册nib
并通过Bundle中url拿到nib文件
NSURL *url = [[NSBundle bundleForClass:[self class]] URLForResource:@"ZCTestCell" withExtension:@"bundle"];
NSBundle *resourcesBundle = [NSBundle bundleWithURL:url];
UINib *cellNib = [UINib nibWithNibName:NSStringFromClass([ZCTestCell class]) bundle:resourcesBundle];
[self.tableView registerNib:cellNib forCellReuseIdentifier:identifier];
有两种解决方案:
- 使用命令xib转nib
- 创建Bundle文件,直接生成nib文件
以下是命令行xib转nib:
ibtool --errors --warnings --output-format human-readable-text --compile /Users/yz/iOSwork/sourceTree/do-iOS/do_Album/doExtLib/AlbumController/doYZAssetCell.nib /Users/yz/iOSwork/sourceTree/do-iOS/do_Album/doExtLib/AlbumController/doYZAssetCell.xib
注释:
终端输入:
ibtool --errors --warnings --output-format human-readable-text --compile
贴上要生成的Nib路径以及文件名称:
/Users/yz/iOSwork/sourceTree/do-iOS/do_Album/doExtLib/AlbumController/doYZAssetCell.nib
贴上把Xib的文件路径:
/Users/yz/iOSwork/sourceTree/do-iOS/do_Album/doExtLib/AlbumController/doYZAssetCell.xib
编译好nib之后,在bundle中把xib替换掉,然后把bundle拖到主项目中,添加引用即可加载。