写点什么

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

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

关注

评论

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

穆长春:数字人民币“双离线”支付开发完毕后续将试点

CECBC

数字钱包

架构师训练营第 1 期第 6 周作业

业哥

甲方日常 38

句子

工作 随笔杂谈 日常

这里有一份Java程序员的珍藏书单,请您注意查收

捡田螺的小男孩

Java 后端 PDF

保证缓存与数据库的数据一致性不是很容易

架构师修行之路

缓存 一致性

搜狗搜索或成为企鹅号流量入口:腾讯欲实现自己的流量闭环

石头IT视角

算法训练营毕业总结——以此自勉

Airship

算法 算法和数据结构

一笔订单,但是误付了两笔钱!这种重复付款异常到底该如何解决?

楼下小黑哥

支付宝 微信支付 支付系统 支付

既不能神化,也不要泛化区块链

CECBC

金融 数字技术

程序员跳槽,只要用好(2+2)方法论,绝对可以找到一家好公司

Java架构师迁哥

缓存架构不够好,系统容易瘫痪

架构师修行之路

缓存 微服务 架构设计

分布式关系数据库

韩向民

第五周课后总结

饭桶

现场突击京东程序员的购物车!看看"11.11"都买啥?

京东科技开发者

程序人生

Javaer 进阶必看的 RocketMQ ,就这篇了

yes

RocketMQ 消息队列

ARTS打卡 第21周

引花眠

微服务 ARTS 打卡计划 springboot

openEuler进化记:一颗探索宇宙的生态之星

脑极体

openEuler开源下一代全场景虚拟化平台StratoVirt

openEuler

开源 虚拟化 openEuler stratovirt

SpringCloud Alibaba开篇:SpringCloud这么火,为何还要学习SpringCloud Alibaba?

冰河

分布式 微服务 高性能 SpringCloud Alibaba

来自朋友最近阿里、腾讯、美团等P7岗位面试题

艾小仙

Java 阿里巴巴 程序员 腾讯 面试

java安全编码指南之:文件IO操作

程序那些事

java安全编码 java安全 java安全编码指南 java代码规范

架构师训练营第六周作业

Geek_4c1353

马云:数字货币可能会重新定义货币

CECBC

金融

第五周课后练习

饭桶

黑幕!爆京东18A技术专家纯手打:小团队构建大网站架构实战

996小迁

Java 学习 架构 面试 笔记

二十四、深入Python多进程multiprocessing模块

刘润森

Python

架構師訓練營第 1 期 - 第 05 周作業

Panda

架構師訓練營第 1 期

云原生时代 容器持久化存储的最佳方式是什么?

京东科技开发者

数据库 云存储

云开发·多次订阅一次性订阅消息后定时发送

Yukun

微信小程序 小程序云开发 消息推送 订阅消息

你用过宏##粘贴函数,然后用函数指针查找执行吗?今天就给你说道说道

良知犹存

c c++

anyRTC与京东智联云市场达成战略合作,携手音视频平台

anyRTC开发者

ios 音视频 WebRTC RTC 安卓

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