2012-09-24 13 views
8

Duplicar posible:
Can you reference Xib files from static libraries on the iPhone?una punta que se incluye en un marco

He creado un marco iOS e incluye una vista xib. Cuando depura el programa, esta línea de código funcionó bien:

MyViewController *controller = [[MyViewController alloc] initWithNibName:@"MyView" bundle:[NSBundle mainBundle]]; 

Sin embargo, cuando 'referencia' el marco de otro proyecto - la punta ya no está en el 'mainBundle' es. ¿Qué debería hacer con el código anterior (que forma parte del marco) para que se cargue desde el marco y no desde el proyecto de la aplicación consumidora?

+0

Sorta relacionada [? ¿Se puede hacer referencia a archivos xib de bibliotecas estáticas en el iPhone] (http://stackoverflow.com/questions/707429/can-you -reference-xib-files-from-static-libraries-on-the-iphone) – CodaFi

+0

@ConfusedNoob - es una lib estática o un [framework universal] (https://github.com/kstenerud/iOS-Universal-Framework) para iOS? – FluffulousChimp

+0

Es un marco universal según esta publicación - http://spin.atomicobject.com/2011/12/13/building-a-universal-framework-for-ios/ pero comienza su vida como una biblioteca estática. – ConfusedNoob

Respuesta

15

El marco en cuestión debe tener un identificador de paquete en su archivo Info.plist típicamente. En la aplicación que hace uso de este marco de encargo, usted debería ser capaz de acceder a los recursos en este paquete por:

NSString *frameworkBundleID = @"com.yourCompany.YourFrameworkBundleID"; 
NSBundle *frameworkBundle = [NSBundle bundleWithIdentifier:frameworkBundleID]; 

Este es el NSBundle desde donde se puede acceder a los recursos del marco.

EDIT:

Parece que hay una alternativa (posiblemente mejor) medios de acceso al paquete en cuestión.

por ejemplo:

NSBundle *bundle = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"MyLibraryResources" withExtension:@"bundle"]]; 

Ver this excellent tutorial

+0

Lo intentaré. Dado que el código está dentro del marco, ¿hay una forma más "introspectiva" de hacer esto en lugar de tener el nombre codificado en el marco ... p. [NSBundle currentBundle]; // pseudocódigo tonto – ConfusedNoob

+1

downvote - ¿en serio? el OP indicaba el "marco de iOS" por el cual uno razonablemente podría asumir algo como [esto] (https://github.com/kstenerud/iOS-Universal-Framework) en el cual los recursos ** pueden ** empaquetarse. – FluffulousChimp

+0

@ConfusedNoob inseguro acerca de la introspección que sugiera. – FluffulousChimp

Cuestiones relacionadas