2010-05-09 9 views
6

Tengo algunos problemas para trabajar con bibliotecas e incluye archivos xib. Déjame explicar mi situación primero. Tengo un proyecto que está funcionando bastante bien. Ahora necesito una parte de mi proyecto como biblioteca para otro cliente que quiera utilizar parte de la funcionalidad en su aplicación. Creé una biblioteca con la ayuda del artículo that altamente recomendado.Problema al utilizar archivos xib en bibliotecas

Mi cliente debe ser capaz de inicializar un controlador principal vista como esta:

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

que seguro conduce a un error cuando trato de presentar ese controlador de vista modal. No estoy seguro de qué paquete debo usar aquí. Intenté algo como

[NSBundle bundleForClass:[SomeClassInTheLibrary class]]; 

pero eso no resolvió el problema.

Me alegraría si alguien pudiera decirme cómo usar realmente un archivo xib en ese tipo de situación.

Gracias
-f

actualización

Ok, veo que lo tengo mal de alguna manera. Solo por aclaración: lo que necesito es la biblioteca, los encabezados y los recursos adicionales, ¿verdad? ¿Existe algún tipo de práctica recomendada para crear y enviar "una característica" con todas sus partes mencionadas anteriormente?

Respuesta

6

bibliotecas estáticas no pueden incluir gráficos, sonidos, o incluso xibs cabeceras. Solo código de objeto. Incluso si agregó los xibs a Copy Bundle Resources, no se convertirán en parte del archivo de objeto. Desafortunadamente, no puede usar bibliotecas o marcos dinámicos en el iPhone. Consulte my answer here para obtener una sugerencia de cómo crear un paquete de activos por separado. También puede enviar a su cliente los archivos xib por separado, pero luego deben reemplazarlos a mano si cambian en el futuro.

+0

Entonces, si lo hice de esta manera, tuve que entregarle a mi cliente la biblioteca, los encabezados y el paquete con los archivos xib, ¿verdad? – flohei

+0

Sí exactamente. Así es como Facebook lo hace, por ejemplo. (Puede seguir el enlace en la pregunta a la que me he vinculado). – Felixyz

0

Pruebe sin agregar la extensión al archivo XIB. Esa es la forma en que generalmente lo hago. Tampoco estoy seguro de si el XI ter debe ser compilado a un SEMILLA ..

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

Cuando intento que sigo obteniendo un error que dice 2010-05-09 12: 18: 23.099 prueba [6416: 207] *** Aplicación de terminación debido a la excepción no detectada 'NSInvalidArgumentException', razón: '- [UIViewController _loadViewFromNibNamed: bundle:] no pudo cargar una punta llamada "LibraryMainViewController" ' ¿Es posible que no haya agregado correctamente el archivo xib a esa biblioteca? Lo agregué a la "Fase de compilación de Copy Bundle Resources". – flohei

Cuestiones relacionadas