BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース MonoTouch.DialogがiPhoneのダイアログ作成を手軽にする

MonoTouch.DialogがiPhoneのダイアログ作成を手軽にする

ブックマーク

原文(投稿日:2010/02/24)へのリンク

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上で動かすためのものである。

この記事に星をつける

おすすめ度
スタイル

BT