MonoTouch.Dialog让iPhone对话框的创建更加便捷

为了简化用MonoTouch来进行iPhone开发,Miguel de Icaza开发了2个基于UITableView的抽象层。这些抽象层让开发人员可选择是使用基于特性标记的声明语法,还是使用基于嵌套控件的命令模型来开发。

UITableView或“表视图”是iPhone开发的重要组成部分。虽然它很强大,用起来却也很枯燥。人们不能简单地添加新视图节(sections)和视图行(rows)。首先,开发人员不得不重写numberOfSections函数来返回正确的计数。接着numberOfRowsInSection函数也必须进行调整来为每个函数返回正确的值。最后,界面部件本身需要通过cellForRowAtIndexPath函数来加载。如果这3个函数没有保持一致,那么UI上的控件看起来就像随机摆放的。

Miguel开发的抽象层的核心就是使用一系列嵌套的“元素”。每个元素都表示一种类型的界面部件,其在运行时会被放置到一个单元格中。下面是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是基于强大的模型/视图/控制器(MVC)来构建的,这种方式让大家可以有效地扩展到大数据集,然而大部分配置页面和数据录入页面却不需要这么复杂的方式。
另外一个特性是,它会处理好所有在进行文本录入的记录问题,而无需编程者插手这些工作:接受键盘输入,在回车的时候自动切换到下一个录入行,在视图节中排列所有录入行,在已经完成所有录入后隐藏键盘。

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设备上。

查看英文原文:MonoTouch.Dialog Makes Creating Simple iPhone Dialogs Easier and Faster

你可能感兴趣的:(MonoTouch.Dialog让iPhone对话框的创建更加便捷)