ios interface-builder rubymotion

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.



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).



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:

  1. Cree su archivo .xib usando XCode (no es necesario crear un proyecto, solo use Archivo | Nuevo ... | Archivo) y guárdelo en la carpeta de resources . Como todavía no hay soporte para puntos de venta, tenga cuidado de establecer la propiedad de tag para cada control que desee usar en su código (la encontrará en la hoja de propiedades de cada componente debajo del encabezado "Ver").
  2. RubyMotion se encargará de compilar tu archivo .xib en un archivo .nib , así que disfruta :)
  3. En su clase derivada de UIViewController , cargue la punta utilizando loadNibNamed:owner:options: como se muestra a continuación.
  4. En viewDidLoad , viewDidLoad sus diversos componentes usando viewWithTag: y agregue controladores de eventos usando addTarget:action:forControlEvents: como se muestra a continuación.
  5. 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