写点什么

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:321630
用户头像

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

关注

评论

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

【漏洞分析】Apache ShardingSphere-Proxy <5.3.0 身份认证绕过

墨菲安全

开源 安全漏洞 软件供应链安全

严选精品葡萄,酿造百年贾斯特里尼&布鲁克斯葡萄酒

联营汇聚

【世界杯黑技术专题】「原理探索专题」一文解读一下“卡塔尔世界杯”的先进技术之半自动越位技术SAOT+比赛用球Al Rihla

洛神灬殇

12月日更 世界杯 世界杯黑科技

学习下Redis内存模型

京东科技开发者

Java 前端 内存 数据存储 内部编码

贾斯特里尼&布鲁克斯葡萄酒,来自法国的专属浪漫

联营汇聚

华为云桌面,如何助力企业云上轻松办公

科技怪授

云桌面

数据可视化软件有哪些?

优秀

数据可视化工具

程序员是“短命”职业吗?年龄大了是不是没前途?

千锋IT教育

5大理由告诉你,为什么选择华为云桌面

与时俱进的时代

运维自动化之监控平台

大V

DevOps 运维自动化 监控报警

微信业务架构图

lory(侯保国)

全网最全 java 进制转换详解

千锋IT教育

阿里云IoT物联网实例讲解——实践类

阿里云AIoT

阿里云 物联网平台 IoT 设备管理

AI技术赋能数智化转型,激发企业变革创新

用友BIP

数字孪生赋能智慧港口解决方案,助力港口数字化转型

袋鼠云数栈

数字孪生

职场新人有没有潜力,看这一个能力就够了!

图灵教育

数据分析 图表 可视化数据

协同高效运转,华为云桌面助力企业数字化转型!

科技说

数据库上云已成趋势,华为云数据库与传统数据库对比解析

与时俱进的时代

学生系统架构图

lory(侯保国)

物流自动化:趋势和机遇

世开 Coding

自动化 物流行业

如何优雅的写 css 代码

京东科技开发者

CSS 前端 代码 优化 精简

卓越实力备受认可 HashData再获权威大奖

酷克数据HashData

金融科技 数据库·

TCP-SYN超时重传问题排查

Kevin Wu

高并发 网关 TCP协议

基于Redis实现DelayQueue延迟队列设计方案(附源码)

石臻臻的杂货铺

redis

如何区分位图和矢量图格式?怎样一键把位图转换成矢量图?

互联网民工阿强

AI 位图 图片处理 矢量图 格式转换

物联网设备端的传感器数据如何实时上报到云平台——实践类

阿里云AIoT

安全 物联网 物联网安全 技术标签

数据库原理及MySQL应用 | 数据表操作

TiAmo

:MySQL 数据库 数据库· 12月月更

现在即未来,华为云桌面引领桌面变革新潮

科技说

架构实战营第十期模块三作业

刘博

职场新人有没有潜力,看这一个能力就够了!

图灵社区

数据分析 图表 可视化数据

由浅入深剖析JDK源码!美团大牛手撸并发原理笔记真香

Java永远的神

程序员 并发编程 后端 jdk源码 架构师

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