RubyMotionアプリでStoryboardを使うには

RubyMotionアプリでStoryboardを使ったら楽になるかなあ、ていうかそもそもRubyMotionでStoryboardって使えるのかしら、とぼんやり思ったのでggってみたらズバリなページが見つかりました。
RubyMotion で Storyboard を使う
非常に丁寧にまとまっています。ありがとうございます。
こちらにあるとおり、RubyMotionでもStoryboardはバッチリ使えました。
楽になるかはまだよく分かりません。。
とりま、使う手順をまとめてみました。

やること

  1. XcodeでStoryboardを作成する
  2. StoryboardファイルをコンパイルしてできたディレクトリをRubyMotionアプリのresourcesの下に配置する
  3. AppDelegateのapplicationメソッドの中でStoryboardを読み込み、Storyboard IDとともにrootViewControllerを設定する

1. XcodeでStoryboardを作成する

ここで作成するときのポイント。

最初に表示するViewControllerのStoryboard IDに任意値を設定する

Storyboardを読み込み、rootViewControllerを設定する際に必要になります。

SegueにIDを設定する

Segueによる画面遷移をRubyMotionでperformSegueWithIdentifierを使って実装してあげるため、IDが必要になります。

2. StoryboardファイルをコンパイルしてできたディレクトリをRubyMotionアプリのresourcesの下に配置する

StoryboardファイルをRubyMotionアプリのresourcesの下へコピーして、

$ ibtool --compile Main.storyboardc Main.storyboard

のようにコンパイルすると、Main.storyboardc というようなディレクトリが作成されます。

3. AppDelegateのapplicationメソッドの中でStoryboardを読み込み、Storyboard IDとともにrootViewControllerを設定する

UIStoryboardのinstantiateViewControllerWithIdentifierでStoryboard IDを指定します。

class AppDelegate
  def application(application, didFinishLaunchingWithOptions:launchOptions)
    return true if RUBYMOTION_ENV == 'test'

    @window = UIWindow.alloc.initWithFrame(UIScreen.mainScreen.bounds)
    @storyboard = UIStoryboard.storyboardWithName('Main',  bundle:nil)
    @window.rootViewController = @storyboard.instantiateViewControllerWithIdentifier('TopTab')
    @window.rootViewController.wantsFullScreenLayout = true
    @window.makeKeyAndVisible
    true
  end
end

サンプルアプリつくってみました。

MotionWithStoryboard

Comments