ios - ¿Puedo crear aplicaciones de RubyMotion con Interface Builder?
interface-builder (6)
El capuchino tenía el mismo problema. Desarrollaron una herramienta llamada XcodeCapp: https://github.com/cappuccino/cappuccino/tree/master/Tools/XcodeCapp
Crea archivos Obj-C "ficticios" a los que puede conectar sus puntos de venta y acciones en IB, los analiza automáticamente en segundo plano y le permite utilizar IB para diseñar sus IU de Cappuccino.
Debería ser posible adoptar un enfoque similar con RubyMotion (si realmente desea utilizar IB).
- Johannes
Ruby Motion acaba de salir, y parece que el screencast no dice nada sobre si puedes usar Interface Builder para construir tus interfaces e integrarlos en tu proyecto de RubyMotion. ¿Es posible tal cosa? ¿O realmente tengo el código todo a mano, sin mencionar el mantenimiento de diferentes piezas de código para iPhone / iPad?
Mi representante no es lo suficientemente alto como para crear una etiqueta rubymotion, así que por favor ayude si es apropiado.
Hay alguien que ha hecho eso:
Aquí hay un video tutorial: https://www.youtube.com/watch?v=cOapNvehbg4
Y este es el sitio web https://github.com/yury/ib
Extra-Tipp: para encontrar envoltorios para rubymotion verifique esta fuente
http://rubymotion-wrappers.com/
Espero que esto ayude
Pero si realmente desea utilizar IB, entonces probablemente podría usarlo para diseñar su interfaz de usuario y simplemente llamar
NSBundle.mainBundle.loadNibNamed(MY_NIB_NAME, owner:self, options:nil)
o similar. No creo que RubyMotion haga ninguna mutilación de nombres para que puedas usar tus clases de rubíes en IB al establecerlas explícitamente.
Probablemente pueda construir la interfaz en IB y llamar a las herramientas de línea de comandos para compilar el XIB en un NIB.
Sin embargo, no podrá conectar salidas o asignar acciones porque IB no puede analizar los archivos fuente de Ruby para los tokens IBOutlet
y IBAction
. Normalmente, el código de carga de NIB hace esas conexiones por usted después de cargar su NIB. Tendrás que hacerlo tú mismo, en código.
De las dos debilidades evidentes en RubyMotion, para mí esta es la peor. (La otra es que la falta de completar el código hará que la escritura en las API de Cocoa sea realmente tediosa).
Sí, puedes usar Interface Builder en RubyMotion.
Los archivos .xib que se encuentran en el directorio de recursos se compilan automáticamente en archivos .nib y están disponibles para su proyecto.
Incluso hay una forma de admitir puntos de venta si lo desea:
https://github.com/yury/ib#readme
ianp.org/2012/05/07/rubymotion-and-interface-builder
Solo me gustaría señalar que RubyMotion 1.3 ahora admite la compilación automática de archivos .xib
que .xib
en la carpeta de resources
. Así que ahora el flujo de trabajo se convierte en:
- Cree su archivo
.xib
usando XCode (no es necesario crear un proyecto, solo use Archivo | Nuevo ... | Archivo) y guárdelo en la carpeta deresources
. Como todavía no hay soporte para puntos de venta, tenga cuidado de establecer la propiedad detag
para cada control que desee usar en su código (la encontrará en la hoja de propiedades de cada componente debajo del encabezado "Ver"). - RubyMotion se encargará de compilar tu archivo
.xib
en un archivo.nib
, así que disfruta :) - En su clase derivada de
UIViewController
, cargue la punta utilizandoloadNibNamed:owner:options:
como se muestra a continuación. - En
viewDidLoad
,viewDidLoad
sus diversos componentes usandoviewWithTag:
y agregue controladores de eventos usandoaddTarget:action:forControlEvents:
como se muestra a continuación. Como beneficio adicional, la próxima vez que desee editar su xib, simplemente
open resources/MyView.xib
, solo lanzará las partes buenas de XCode.class CalculatorViewController < UIViewController def loadView views = NSBundle.mainBundle.loadNibNamed "Keyboard", owner:self, options:nil self.view = views[0] end def viewDidLoad button = view.viewWithTag 1 button.addTarget self, action:''buttonTapped:'', forControlEvents:UIControlEventTouchUpInside end def buttonTapped(button) # ... end end