I've installed PSCarouselView from cocoapods to my project. And when I try to use this lib I'm getting runtime error. And the error says couldn't load nib file...
I've checked the library and saw that nib file registered properly. And also I've checked target membership and checkbox is checked. Then I check the podspec file and couldn't find any podspec about the lib and then I created a pod spec file for the lib. Using command below
pod spec create [PSCarouselView]https://github.com/DeveloperPans/PSCarouselView
Then I can check the podspec file and add the following commands;
s.resources = "Resources/*.xib"
s.resource_bundles = {
'PSCarouselView' => [
'Pod/**/*.xib'
Actually xib file copied to my project before I add this commands to podspec. I just tried desperately...
And xib file registered with the code showing below;
[self registerNib:[UINib nibWithNibName:@"PSCarouselCollectionCell" bundle:nil] forCellWithReuseIdentifier:@"PSCarouselCollectionCell"];
And Identifier also defined properly;
So now I'm quite desperate about how to solve this problem.
I'm sharing the error below;
MyTestApp[18232:1316081] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/adminuser/Library/Developer/CoreSimulator/Devices/464AB3F8-3C31-4473-AD1B-F554F3F59CDB/data/Containers/Bundle/Application/B4A5F964-A6E0-4357-878F-11A299FD1ACA/MyTestApp.app> (loaded)' with name 'PSCarouselCollectionCell''
*** First throw call stack:
(
0 CoreFoundation 0x0000000101598d85 __exceptionPreprocess + 165
1 libobjc.A.dylib 0x000000010100cdeb objc_exception_throw + 48
2 CoreFoundation 0x0000000101598cbd +[NSException raise:format:] + 205
3 UIKit 0x00000001023dec89 -[UINib instantiateWithOwner:options:] + 499
4 UIKit 0x000000010289f553 -[UICollectionView _dequeueReusableViewOfKind:withIdentifier:forIndexPath:viewCategory:] + 716
5 UIKit 0x000000010289febc -[UICollectionView dequeueReusableCellWithReuseIdentifier:forIndexPath:] + 169
6 PSCarouselView 0x0000000100b13b92 -[PSCarouselView collectionView:cellForItemAtIndexPath:] + 114
7 UIKit 0x000000010288e08f -[UICollectionView _createPreparedCellForItemAtIndexPath:withLayoutAttributes:applyAttributes:isFocused:] + 483
8 UIKit 0x0000000102891d96 -[UICollectionView _updateVisibleCellsNow:] + 4988
9 UIKit 0x0000000102896575 -[UICollectionView layoutSubviews] + 258
10 PSCarouselView 0x0000000100b13108 -[PSCarouselView layoutSubviews] + 328
11 UIKit 0x00000001020d1980 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 703
12 QuartzCore 0x0000000105065c00 -[CALayer layoutSublayers] + 146
13 QuartzCore 0x000000010505a08e _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 366
14 UIKit 0x00000001020c1205 -[UIView(Hierarchy) layoutBelowIfNeeded] + 1129
15 UIKit 0x00000001021f65c5 -[UINavigationController _layoutViewController:] + 1613
16 UIKit 0x00000001021f53b4 -[UINavigationController _layoutTopViewController] + 268
17 UIKit 0x00000001021f26bd -[UINavigationController navigationTransitionView:didEndTransition:fromView:toView:] + 856
18 UIKit 0x000000010249cc2c -[UINavigationTransitionView _notifyDelegateTransitionDidStopWithContext:] + 422
19 UIKit 0x000000010249cfa2 -[UINavigationTransitionView _cleanupTransition] + 788
20 UIKit 0x00000001020a47ff -[UIViewAnimationState sendDelegateAnimationDidStop:finished:] + 241
21 UIKit 0x00000001020a1706 +[UIViewAnimationState popAnimationState] + 314
22 UIKit 0x000000010249c8dd -[UINavigationTransitionView transition:fromView:toView:] + 2640
23 UIKit 0x00000001021f7651 -[UINavigationController _startTransition:fromViewController:toViewController:] + 3291
24 UIKit 0x00000001021f7c4d -[UINavigationController _startDeferredTransitionIfNeeded:] + 890
25 UIKit 0x00000001021f8d0b -[UINavigationController __viewWillLayoutSubviews] + 57
26 UIKit 0x00000001023a7503 -[UILayoutContainerView layoutSubviews] + 248
27 UIKit 0x00000001020d1980 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 703
28 QuartzCore 0x0000000105065c00 -[CALayer layoutSublayers] + 146
29 QuartzCore 0x000000010505a08e _ZN2CA5Layer16layout_if_neededEPNS_11TransactionE + 366
30 QuartzCore 0x0000000105059f0c _ZN2CA5Layer28layout_and_display_if_neededEPNS_11TransactionE + 24
31 QuartzCore 0x000000010504e3c9 _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 277
32 QuartzCore 0x000000010507c086 _ZN2CA11Transaction6commitEv + 486
33 QuartzCore 0x000000010507c7f8 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 92
34 CoreFoundation 0x00000001014bdc37 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
35 CoreFoundation 0x00000001014bdba7 __CFRunLoopDoObservers + 391
36 CoreFoundation 0x00000001014b311c CFRunLoopRunSpecific + 524
37 UIKit 0x0000000102011f21 -[UIApplication _run] + 402
38 UIKit 0x0000000102016f09 UIApplicationMain + 171
39 MyTestApp 0x0000000100a598b2 main + 114
40 libdyld.dylib 0x0000000107d9a92d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
If bundle with your .xib (YourView.xib in this example) is in a pods bundle, you can retrieve bundle in file owner UIView subclass this way.
let bundle = Bundle(for: self.classForCoder)
And then instantiate view:
nib.instantiate(withOwner: self, options: nil)
let nib = UINib(nibName: "YourView", bundle: bundle)
In case you want to subclass UIView loaded this way outside of pod module, better use what is below, because 'self.classForCoder' will give you bundle that your subclass is in.
let bundle = Bundle(for: <FileOwnerUIViewSubclass>.classForCoder())
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With