RubyMotionのプロジェクトでアプリの設定画面を作る

主に以下のサンプルを参考に。基本的な考え方はObjective-Cでやるときと変わらない。

mordaroso/rubymotion-settings · GitHub

resources以下にSettings.bundleを置けばiOSの設定アプリに自作のアプリの設定画面が追加される。Settings.bundleの詳細については情報がいくらでもあるので省略。

アプリ内での設定や取得、初期化などは以下のようにして行う。詳細についてはNSUserDefaultsでググるといろいろ出てくるので基本的な操作のみ。

値の設定
NSUserDefaults.standardUserDefaults["key_a"] = "A"

ハッシュと同様に操作できる。
数値などもそのまま設定できるのはなかなか素晴らしい。

値の取得
NSUserDefaults.standardUserDefaults["kay_a"]

こちらもstringForKeyといった冗長なメソッドなしで簡単に使える。(冗長なメソッドも使える)

値の初期化
NSUserDefaults.standardUserDefaults.registerDefaults({"key_b" => 'HOGEHOGE'})

registerDefaultsは通常の値の設定とは違い、すでにkey_bに値が設定されている場合は何もしない。
ちなみにNSUserDefaultsはSettings.bundleに含まれない値も扱える。

ショートカットを作る

app_delegate.rbの頭に以下のように書くだけでコードを簡潔にできる。

Settings = NSUserDefaults.standardUserDefaults

以下のような感じ。

Settings["key_a"] = "A"
Settings["key_a"]
Settings.registerDefaults({"key_b" => 'HOGEHOGE'})

そのうち定番のライブラリが出てくるんだと思うけど、今のところはオレオレで色々やっている。
BubbleWraprubymotion-sugarcubeなどのコードを眺めてよさげだなーと思ったものを拝借したりして。