写点什么

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

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

关注

评论

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

打咩哟!Github热榜第七的SpringBoot笔记(阿里内测版)终于开源!

Java 编程 程序员 架构 面试

03- 面向复杂度的架构设计

Lane

04-可扩展架构

Lane

Minerva -- Airbnb的大规模数据指标系统 Part 2

俞凡

架构 Airbnb 大厂实践 指标

华为大佬的“百万级”MySQL笔记,基础+优化+架构一键搞定

Java~~~

Java MySQL 数据库 面试 架构师

Github访问量破百万!原来是美团大牛的分布式架构实战笔记上线了

Java~~~

Java 面试 分布式 微服务 架构师

Android Jetpack Compose

Changing Lin

8月日更

13W字!腾讯高工手写“Netty速成手册”,3天能走向实战

Java~~~

Java 面试 微服务 Netty 架构师

最全的MySQL总结,助你向阿里“开炮”(面试题+笔记+思维图)

公众号_愿天堂没有BUG

Java 编程 程序员 架构 面试

从外包进入苏宁再跳槽阿里,分享这五年来我“走过的路”

Java 编程 程序员 面试 计算机

模块四作业

Mr.He

架构实战营

新手小白花几个月勇敢裸辞转行网络安全

网络安全学海

网络安全 信息安全 转行 渗透测试 安全漏洞

腾讯技术官手撸笔记,全新演绎“Kafka部署实战”,已开源

Java~~~

Java MySQL 面试 MQ 架构师

05-高性能复杂度

Lane

06-高可用复杂度

Lane

设计千万级学生管理系统的考试试卷存储方案-模块四

小牧ah

架构实战营

毕业设计作业

薛定谔的指南针

架构实战营

Minerva -- Airbnb的大规模数据指标系统 Part 1

俞凡

架构 Airbnb 大厂实践 指标

其实,这就是「幸存者偏差」

非著名程序员

提升认知 认知提升 个人提升 8月日更

毕业感想

薛定谔的指南针

架构实战营

微信朋友圈的高性能复杂度分析

Saber

架构实战营

写作 7 堂课——【2. 复利式写作】

LeifChen

写作技巧 8月日更 复利写作

手撸二叉树之二叉树中第二小的节点

HelloWorld杰少

数据结构与算法 8月日更

初学字典-python

加里都好

架构实战营模块四作业

王晓宇

架构实战营

二本渣渣5面阿里,从准备简历到“直怼”面试官,经历了什么?

公众号_愿天堂没有BUG

阿里开发人员献礼“Java架构成长笔记”,深入内核,拒绝蒙圈

Java~~~

Java spring 面试 微服务 架构师

【架构实战营】毕业设计

swordman

架构实战营

模块4.存储架构设计

Geek_ywh40v

记录一次基于Qt的内存数据修改工具开发

星河寒水

qt 内存数据修改 Cheat Engine

Java架构速成笔记:七大专题,1425页考点,挑战P8岗

Java~~~

Java spring 面试 微服务 架构师

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