Ruby Motionがリリースされたばかりで、Screencastは、Interface Builderを使用してインターフェイスを構築し、RubyMotionプロジェクトに統合できるかどうかについては何も述べていないようです。そのようなことは可能ですか?それとも、iPhone / iPadのさまざまなコードを維持することは言うまでもなく、実際にすべてを手作業でコード化していますか?
私の担当者はrubymotionタグを作成するのに十分な高さではないので、必要に応じて助けてください。
Ruby Motionがリリースされたばかりで、Screencastは、Interface Builderを使用してインターフェイスを構築し、RubyMotionプロジェクトに統合できるかどうかについては何も述べていないようです。そのようなことは可能ですか?それとも、iPhone / iPadのさまざまなコードを維持することは言うまでもなく、実際にすべてを手作業でコード化していますか?
私の担当者はrubymotionタグを作成するのに十分な高さではないので、必要に応じて助けてください。
RubyMotion 1.3は、フォルダー.xib
に入れたファイルの自動コンパイルをサポートするようになりましたresources
。したがって、ワークフローは次のようになります。
.xib
ファイルを作成し(プロジェクトを作成する必要はありません。[ファイル]|[新規...]|[ファイル]を使用するだけです)、resources
フォルダーに保存します。アウトレットはまだサポートされていないためtag
、コードで使用する各コントロールのプロパティを慎重に設定してください(各コンポーネントのプロパティシートの[表示]ヘッダーの下にあります)。.xib
ファイルのコンパイルを処理する.nib
ので、お楽しみください:)UIViewController
を使用してペン先をロードします。loadNibNamed:owner:options:
viewDidLoad
、を使用してさまざまなコンポーネントをフェッチし、を使用viewWithTag:
してイベントハンドラを追加しますaddTarget:action:forControlEvents:
(以下を参照)。ボーナスとして、次にxibを編集するときは、open resources/MyView.xib
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
はい、RubyMotionでInterfaceBuilderを使用できます。
リソースディレクトリにある.xibファイルは自動的に.nibファイルにコンパイルされ、プロジェクトで使用できます。
あなたがそんなに傾いているなら、アウトレットをサポートする方法さえあります:
https://github.com/yury/ib#readme
http://ianp.org/2012/05/07/rubymotion-and-interface-builder/
しかし、本当にIBを使用したい場合は、おそらくそれを使用してUIをレイアウトし、
NSBundle.mainBundle.loadNibNamed(MY_NIB_NAME, owner:self, options:nil)
または類似。RubyMotionが名前マングリングを行うとは思わないので、明示的に設定することでIBでrubyクラスを使用できます。
カプチーノにも同じ問題がありました。彼らはXcodeCappと呼ばれるツールを開発しました:https ://github.com/cappuccino/cappuccino/tree/master/Tools/XcodeCapp
アウトレットとアクションをIBで接続できる「ダミー」のObj-Cファイルを作成し、それらをバックグラウンドで自動的に解析し、IBを使用してカプチーノUIをレイアウトできるようにします。
RubyMotionでも同様のアプローチを取ることができるはずです(本当にIBを使用したい場合)。
おそらく、IBでインターフェイスを構築し、コマンドラインツールを呼び出してXIBをNIBにコンパイルすることができます。
IBOutlet
ただし、IBはRubyソースファイルのトークンとトークンを解析できないため、アウトレットに接続したり、アクションを割り当てたりすることはできませんIBAction
。通常、NIBロードコードは、NIBのロード後にこれらの接続を確立します。コードで、自分でそれを行う必要があります。
RubyMotionの2つの明白な弱点のうち、私にとってこれは最悪です。(もう1つは、コードが完成していないと、Cocoa APIへの書き込みが非常に面倒になることです。)
それを作った人がいます:
これがチュートリアルビデオです:https ://www.youtube.com/watch?v = cOapNvehbg4
そしてこれはウェブサイトhttps://github.com/yury/ibです
Extra-Tipp:rubymotionのラッパーを見つけるには、このソースを確認してください
http://rubymotion-wrappers.com/
お役に立てれば