MonoTouchによるiPhone開発を簡単にするために、Miguel de IcazaはUITableViewを抽象化する新しいレイヤを2つ開発した。これらの抽象化レイヤによって、開発者は属性に基づいた宣言的な文法を使うか、あるいは入れ子のコントロールに基づいた命令モデルを使うという選択肢を得る。
UITableView (または単純に“テーブルビュー”と呼ぶ) はiPhone開発でもっともよく用いられる。これは非常に強力ではあるが、使うのが面倒で退屈でもある。新しいセクションと列を追加するのも単純ではない。まず、numberOfSections関数をオーバーライドして正しいセクション数を返すようにしなければならない。次にnumberOfRowsInSection関数を調整して、それぞれの関数ごとに正しい値を返すようにしなければならない。最後にcellForRowAtIndexPath関数でウィジェット自身をロードしなければならない。もしこれらの3つの関数がうまく同期していなかったなら、UIはばらばらな見た目になってしまいかねない。
Miguelによる抽象化レイヤの1つ目は、入れ子になった“要素”の繰り返しを使う。各要素がウィジェットの種類を表しており、実行時にセルの中に置かれる。Miguelのブログから例を引用する。
var root = new RootElement ("Settings") { new Section (){ new BooleanElement ("Airplane Mode", false), new RootElement ("Notifications", 0, 0) { Notifications } }, new Section (){ new RootElement ("Sound"), { Sound }, new RootElement ("Brightness"){ Brightness }, new RootElement ("Wallpaper"){ Wallpaper } }, new Section () { new EntryElement ("Login", "Your login name", "miguel"), new EntryElement ("Password", "Your password", "password", true), new DateElement ("Select Date", DateTime.Now), new TimeElement ("Select Time", DateTime.Now) } }
Miguelは次のように記している。
UITableViewは強力なModel/View/Controllerパターンを元に作られていて、大きなデータセットにもうまく対応できますが、設定ページやデータ入力ページの多くはここまで複雑である必要がありません。
もう一つの特徴は、これがテキスト入力に必要な記帳をすべて肩代わりするので、プログラマーは何もする必要がないことです。キーボード入力を受けつけ、リターンキーが押されたら次の入力行に移動し、セクション内の全ての入力行を整列し、最後の入力の後はキーボードを片付けます。
Miguelは、設定画面を手早く作ることができる、リフレクションを使ったデザイン方法も提供している。この手法はコンパイラがメンバ変数をソースコード通りの順番でコンパイルすることを前提としたものであるため、ソースコードを自動的に並び替えるようなコードフォーマット・ユーティリティには注意する必要がある。
class AccountInfo { [Section] public bool AirplaneMode; [Section ("Data Entry", "Your credentials")] [Entry ("Enter your login name")] public string Login; [Caption ("Password"), Password ("Enter your password")] public string passwd; [Section ("Travel options")] public SeatPreference preference; }
MonoTouch.DialogはMIT X11ライセンスの下で提供される。MonoTouch自体はNovellの商品であり、.NETベースのアプリケーションをAppleのiPhoneやiPad上で動かすためのものである。