2010-01-11 26 views
15

Soy nuevo en el desarrollo de MonoTouch y iPhone. Tengo mis imágenes (PNG) en una carpeta de recursos en MonoDevelop; sin embargo, si deseo establecer la propiedad de la imagen para un botón en Interface Builder, ¿cómo hago eso? Siempre es un menú desplegable en blanco. ¿Debo usar XCode para acceder al archivo XIB y luego insertar de alguna manera el archivo de imagen del botón que necesitaré en él?Imágenes en Interface Builder al usar MonoTouch

+0

No sé nada sobre monotouch, pero en mi experiencia para Interface Builder para "ver" un archivo de imagen el archivo necesita ser parte del mismo proyecto Xcode del que el archivo xib es parte. En realidad, no incrusta el archivo de imagen en el archivo xib, pero el cargador de punta normalmente solo puede cargar recursos del paquete de aplicaciones, y cuando agrega una imagen a un proyecto de Xcode, se agrega como un archivo que estará en el paquete de aplicaciones construido. Por lo tanto, IB espera que los recursos del proyecto Xcode sean archivos válidos para hacer referencia a los archivos nib (xib), ya que tiene cierta seguridad de que estarán allí en tiempo de ejecución. – Nimrod

Respuesta

11

This is a known limitation of MonoDevelop and Interface Builder. Para agregar imágenes a un XIB en Interface Builder, deben formar parte de un proyecto de XCode, que por supuesto proveniente de MonoDevelop no lo son.

Para lograr lo que intenta hacer, deberá configurar la imagen mediante código y asegurarse de que la acción de compilación de su imagen esté configurada en Contenido. Para hacer esto, simplemente haga clic con el botón derecho en su imagen dentro de MonoDevelop y seleccione Crear acción> Contenido.

En su vista con el botón, cree una salida en Interface Builder para su botón, conéctela, luego desde el código para establecer su imagen, solo necesita usar el .FromFile ("ruta/nombre") método de UIImage.

UIImage buttonImage = UIImage.FromFile ("resources/image.png"); 
myButton.SetBackgroundImage (buttonImage,UIControlState.Normal); 

Eso está fuera de mi cabeza, pero creo que debería hacerlo.

+2

Aún puede configurar la imagen en Interface Builder, simplemente no aparecerá en IB mientras edita. Agregue la imagen al directorio raíz en monotouch, establezca el contenido como arriba, y en IB configure la imagen en "myimage.png". Verá un signo de interrogación durante la edición, pero durante el tiempo de ejecución aparecerá la imagen. –

+0

vote por una gran respuesta. – bharath

5

Puede configurar manualmente la imagen en el Interface Builder, pero no se mostrará hasta el tiempo de ejecución. El nombre de la imagen puede incluir una ruta, p. "images/settings.png".

3

También necesitaba que esto funcionara, aquí hay una solución que encontré. Necesita crear un proyecto dummy xcode. Colóquelo en la misma carpeta que su proyecto. Agregue todos sus archivos xib y de imagen a ese proyecto xcode arrastrándolos cuando se abra el proyecto en xcode. Ahora podrás ver la vista previa de las imágenes. Los archivos de imagen deben estar en la misma carpeta que el archivo de proyecto y se debe abrir xcode con el proyecto ficticio mientras se abre el constructor de interfaz. No es genial, pero resuelve el problema por el momento. Here es un proyecto de muestra que he creado.

Para resolver este problema en el lado de MonoDevelop, es necesario crear algún código de comunicación entre procesos, creo que un buen punto de partida será buscar "PBXProjectWatcherServerConnection-3.1.2" en google.

+0

Esto funciona ... tipo de. Cuando selecciono una imagen en el constructor Interfaz, solo usa el nombre inmediato de la imagen e ignora la ruta del archivo. Si agrego la ruta de archivo en el constructor de interfaz, la imagen vuelve al signo de interrogación. ¿Hay alguna forma de hacerlo funcionar con la ruta? –

4

Todas las soluciones dadas aquí son completamente incorrectas y engañosas. Todo lo que necesita hacer es colocar sus imágenes en la carpeta de Recursos (en la raíz del proyecto) y agregar sus imágenes a esta carpeta. Después de agregar archivos a esta carpeta, marque todos los archivos y asegúrese de que su acción de compilación esté configurada en BundleResource.

+0

Estas características solo se agregaron en 2012, por lo que las respuestas anteriores fueron correctas, pero ahora están desactualizadas. Consulte aquí la respuesta del desarrollador a la misma pregunta: http://stackoverflow.com/a/11493599/66131. De todos modos, tu respuesta funcionó perfectamente, ¡así que gracias! –

Cuestiones relacionadas