2010-05-09 3 views
6

J'ai des problèmes avec les bibliothèques et les fichiers xib inclus. Laissez-moi expliquer ma situation d'abord. J'ai un projet qui fonctionne plutôt bien. Maintenant, j'ai besoin d'une partie de mon projet en tant que bibliothèque pour un autre client qui veut utiliser certaines fonctionnalités de son application. J'ai créé une bibliothèque avec l'aide de that article fortement recommandé.Problème lors de l'utilisation des fichiers xib dans les bibliothèques

Mon client devrait pouvoir initialiser un contrôleur de vue principale comme ceci:

LibraryMainViewController *lmvc = [[LibraryMainViewController alloc] initWithNibName:@"LibraryMainViewController.xib" bundle:foo]; 

Cela conduit pour sûr à une erreur lorsque je tente de présenter ce contrôleur de vue de façon modale. Je ne suis pas sûr de quel paquet je dois utiliser ici. J'ai essayé quelque chose comme

[NSBundle bundleForClass:[SomeClassInTheLibrary class]]; 

mais cela n'a pas résolu le problème.

Je serais heureux que quelqu'un puisse me dire comment utiliser un fichier xib dans ce genre de situation.

Merci
-f

Mise à jour

Ok, je vois que je me suis trompé en quelque sorte. Juste pour clarifier: Ce dont j'ai besoin, c'est la bibliothèque, les en-têtes et les ressources supplémentaires, n'est-ce pas? Existe-t-il une sorte de meilleure pratique pour créer et expédier "une fonctionnalité" avec toutes ses parties mentionnées ci-dessus? Essayez sans ajouter l'extension au fichier XIB.

Répondre

6

bibliothèques statiques ne peuvent pas inclure des graphiques, des sons, xibs ou même les en-têtes. Seul le code objet. Même si vous avez ajouté les xibs à Copy Bundle Resources, ils ne feront pas partie du fichier objet. Malheureusement, vous ne pouvez pas utiliser de bibliothèques ou de frameworks dynamiques sur l'iPhone. Voir my answer here pour une suggestion sur la création d'un regroupement d'actifs distinct. Vous pouvez également envoyer les fichiers xib séparément à votre client, mais ils doivent les remplacer à la main s'ils changent à l'avenir.

+0

Donc, si je le faisais de cette façon, je devais remettre à mon client la bibliothèque, les en-têtes et le paquet avec les fichiers xib, non? – flohei

+0

Oui exactement. C'est ainsi que Facebook le fait par exemple. (Vous pouvez suivre le lien dans la question que j'ai liée à.) – Felixyz

0

Essayez sans ajouter l'extension au fichier XIB. C'est comme ça que je le fais habituellement. Je suis également pas sûr si le doit être compilé XIB à un NIB ..

NSBundle *bundle = [NSBundle bundleForClass:[SomeClassInTheLibrary class]]; 
LibraryMainViewController *lmvc = [[LibraryMainViewController alloc] initWithNibName:@"LibraryMainViewController" bundle:bundle]; 
+0

Lorsque j'essaie que j'obtiens toujours une erreur en disant 2010-05-09 12: 18: 23.099 test [6416: 207] *** Terminant l'application en raison d'une exception non interceptée 'NSInvalidArgumentException', raison: '- [UIViewController _loadViewFromNibNamed: bundle:] n'a pas pu charger une plume nommée "LibraryMainViewController" ' Est-il possible que je n'aie pas ajouté correctement le fichier xib à cette bibliothèque? Je l'ai ajouté à la "Phase de construction des ressources du bundle de copie". – flohei

Questions connexes