2016-07-19 175 views
8

Ho installato PSCarouselView da cocoapods al mio progetto. E quando provo ad usare questa lib, sto ricevendo un errore di runtime. E l'errore dice che non è stato possibile caricare il file pennino ...Impossibile caricare NIB in bundle CocoaPods

Ho controllato la libreria e ho visto quel file di pennini registrato correttamente. Inoltre, ho controllato l'appartenenza al target e la casella di controllo è selezionata. Poi controllo il file podspec e non sono riuscito a trovare alcun podspec sulla lib e quindi ho creato un file spec pod per la lib. Usando il comando sotto

pod spec create [PSCarouselView]https://github.com/DeveloperPans/PSCarouselView 

Quindi posso controllare il file podspec e aggiungere i seguenti comandi;

s.resources = "Resources/*.xib" 

    s.resource_bundles = { 
    'PSCarouselView' => [ 
    'Pod/**/*.xib' 

In realtà il file xib copiato nel mio progetto prima di aggiungere questi comandi a podspec. Ho appena provato disperatamente ...

enter image description here

E XI ter del file registrati con il codice che mostra qui di seguito;

[self registerNib:[UINib nibWithNibName:@"PSCarouselCollectionCell" bundle:nil] forCellWithReuseIdentifier:@"PSCarouselCollectionCell"]; 

E Identificatore anche definito correttamente;

enter image description here

Così ora sono abbastanza disperata su come risolvere questo problema.

Sto condividendo l'errore di seguito;

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) 
+0

se si utilizza il pod come framework, potrebbe essere necessario fare riferimento a un pacchetto di framework. NSString * resourceBundlePath = [[NSBundle mainBundle] pathForResource: @ "Frameworks/PSCarouselView.framework/PSCarouselView "ofType: @" bundle "]; NSBundle * bundle = [NSBundle bundleWithPath: resourceBundlePath]; –

risposta

5

È necessario includere il gruppo del pod.

Per esempio nel mio codice (una vista collezione basata simbolo di valuta picker):

public class BGSCurrencyPickerVC: UIViewController,UICollectionViewDelegate { 

public override func viewDidLoad() { 
    super.viewDidLoad() 

    // Register cell classes 

    let podBundle = NSBundle(path: NSBundle(forClass: BGSCurrencyPickerVC.self).pathForResource("BLAMCurrencyPicker", ofType: "bundle")!) 

    self.collectionView!.registerNib(UINib(nibName: "BGSCurrencyPickerCVCell", bundle: podBundle), forCellWithReuseIdentifier: "BGSCurrencyPickerCVCell") 

Per un esempio un'occhiata a Collection View based swift cocoapod

ulteriore esempio, Currency Picker cocoapod

Per Swift 3:

let podBundle = Bundle(path: Bundle(for: BLAMPaymentCVView.self).path(forResource: "BLAMPayment", ofType: "bundle")!) 
+0

Cosa digiti nel percorso per parametro risorsa? Non capisco proprio il bit. – Pavan

+0

@Pavan il percorso per parametro risorsa è il nome del pod. Nel mio esempio per Swift 3 è "BLAMPayment". Aggiungerò un altro esempio di collegamento che lo dimostra – greentor

7

Se in bundle con h il tuo .xib (YourView.xib in questo esempio) si trova in un pacchetto di pod, puoi recuperare bundle nella sottoclasse UIView del proprietario di file in questo modo.

let bundle = Bundle(for: self.classForCoder) 

E poi istanziare vista:

nib.instantiate(withOwner: self, options: nil) 
let nib = UINib(nibName: "YourView", bundle: bundle) 

Nel caso in cui si desidera creare una sottoclasse UIView caricato in questo modo al di fuori del modulo pod, uso meglio ciò che è al di sotto, perche 'self.classForCoder' vi darà si bundle la sottoclasse è in.

let bundle = Bundle(for: <FileOwnerUIViewSubclass>.classForCoder()) 
+1

Puoi spiegare brevemente cosa fa questo codice, perché risolve il problema e dove dovrebbe essere usato? – JJJ

+0

@JJJ ha aggiornato la risposta. –

Problemi correlati