Ho perso una mezza giornata per capire questo e non riesco a vedere una soluzione diretta online.Dove inserire il file .xib all'interno del progetto quadro?
Ho creato un framework CocoaTouch iOS. Ho alcune lezioni private e pubbliche e tutto funziona bene. Il problema è quando ho Aggiungi file .xib all'interno di tale quadro.
Dentro il mio quadro che voglio creare un'istanza di file .xib e l'errore sto ottenendo è:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/dino/Library/Developer/CoreSimulator/Devices/FEDECDC2-D4EA-441E-B53B-329A5B3DFB7A/data/Containers/Bundle/Application/78CEC01F-4C36-4143-A7D6-DDE6CCAC801B/MyApp.app> (loaded)' with name 'NUInAppMessageView''
Ho sentito dire che i file .xib non possono essere contenuti all'interno libreria statica, ma penso che dovrebbe essere in grado di essere utilizzato all'interno del framework.
La destinazione del mio framework contiene "Copy Bundle Resources" di prima e questo file .xib è stato aggiunto automaticamente quando l'ho creato all'interno del progetto framework.
ho letto su alcuni luoghi che le risorse dovrebbero essere aggiunti in un separato. bundle target ma non esiste un'opzione "bundle" quando si creano nuovi target e credo che questo sia il vecchio statico-libreria-giorni.
Questo è il codice che sto usando per inizializzare mio punto di vista (all'interno del quadro):
NSBundle * frameworkBundle = [NSBundle bundleForClass:[self class]]; // fine (not nil)
NUInAppMessageView *view = [[frameworkBundle loadNibNamed:@"NUInAppMessageView" owner:self options:nil] firstObject]; // <-- CRASH
ho cercato di rompere questo in un più chiamate di metodo e calcolato che Pennino si è sempre creato:
UINib *nib = [UINib nibWithNibName:@"NUInAppMessageView"
bundle:frameworkBundle]; // fine (not nil)
NSArray *objects = [nib instantiateWithOwner:self options:nil]; // <-- CRASH
Non ho più idee. Ho provato con il progetto Clean, cancellando i dati derivati ma non sembrano fare il lavoro.
Mi manca qualcosa qui?
Non ho idea di cosa stai facendo male, quindi ho creato un progetto di esempio che puoi scaricare ed esaminare. È scritto in Swift ma ciò non dovrebbe fare molta differenza, esp. come c'è pochissimo codice. :) https://github.com/mattneub/FrameworkWithNib – matt
L'unica differenza evidente tra il tuo codice e il mio è che ho caricato quel pennino dal codice principale, non dal codice quadro, ma quello era solo un incidente; non fa differenza. L'ho appena riscritto in modo tale da caricare il pennino all'interno del codice framework e funziona anche bene. – matt
@matt Ho intenzione di eliminare tutto e creare file .xib freschi. Potrebbe essere che Xcode abbia incasinato qualche parte con le impostazioni memorizzate nella cache. Grazie. – vale4674