QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

  • 2010-02-25
  • 本文字数:1268 字

    阅读完需:约 4 分钟

为了简化用 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

2010-02-25 04:321782
用户头像

发布了 254 篇内容, 共 61.3 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
发现更多内容

aspose.words与文件格式转换实现

程序员架构进阶

word java-API 9月日更 9月月更 aspose.words

点赞收藏功能该如何设计?

江南一点雨

写在 Pencils Protocol TGE 前:加密市场共识才是王道,拥抱社区

BlockChain先知

Nexpose 6.6.267 发布下载,新增功能概览

sysin

漏洞扫描 Nexpose

写在 Pencils Protocol TGE 前:为什么看好 $DAPP?共识就是王道

股市老人

6个 Spring messaging注解:整体架构分析与注解应用案例(必须收藏)

肖哥弹架构

Java spring spring messaging

征程 6E/M 快速上手实战 Sample-PYM

地平线开发者

自动驾驶 算法

VMware Workstation 17.6 Pro macOS Unlocker & OEM BIOS 2.7 for Linux - 在 Linux 上运行 macOS Sequoia

sysin

macos vmware OEM unlocker Workstation

Cisco ISR 4000 IOS XE 17.15.1a 发布下载,新增功能概览

sysin

Cisco 路由器 ISR IOS XE

分库分表核心理念

Java随想录

Java MySQL 分库分表

Cisco Catalyst 9000 Series Switches, IOS XE Release 17.15.1 ED

sysin

Cisco 交换机 IOS XE Cataly 9000

写在 Pencils Protocol TGE 前:看好 $DAPP,加密社区共识是王道

石头财经

VMware Workstation 17.6 Pro macOS Unlocker & OEM BIOS 2.7 for Windows

sysin

macos vmware OEM unlocker Workstation

AI2022下载:Illustrator 2022 (Win&Mac) 直装版

你的猪会飞吗

mac软件下载 Illustrator 2022破解版 Illustrator 2022下载 mac破解软件下载

Mac多协议远程管理软件:Termius for Mac 激活版

你的猪会飞吗

Termius for Mac下载 Termius for Mac破解 mac破解软件下载

Magnet AXIOM 8.0 Windows x64 Multilingual - 数字取证与分析

sysin

数字取证 magenet AXIOM

零基础学习地平线 征程6 QAT 量化感知训练

地平线开发者

自动驾驶 算法 QAT

MonoTouch.Dialog让iPhone对话框的创建更加便捷_.NET_Jonathan Allen_InfoQ精选文章