AICon 深圳站聚焦 Agent 技术、应用与生态,大咖分享实战干货 了解详情
写点什么

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

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

关注

评论

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

Text classification with TensorFlow Hub: Movie reviews

毛显新

tensorflow

想要跳槽拿高薪,却没有大型性能调优经验怎么办?淘宝架构师手把手带你前进

Java架构师迁哥

音视频详细学习路线和权威资料

hanaper

音视频 ffmpeg 语音识别 语音合成 图形图像处理

详解Java内存模型

程序员阿杜

Java JVM Java虚拟机

网络攻防学习笔记 Day91

穿过生命散发芬芳

网络攻防 7月日更

2021最新华为Java校招面试题,看完直呼内行

Java 程序员 面试 后端

熬夜整理的c/c++万字总结(一)

C语言与CPP编程

c c++

「SQL数据分析系列」13. 索引和约束

Databri_AI

sql 分布式

Introduction to the Keras Tuner

毛显新

tensorflow

北鲲云超算平台如何提高高性能计算在云环境下的可行性?

北鲲云

各国纷纷推出数字货币,数字货币发展正当其时

CECBC

毕业总结

请弄脏我的身体

架构实战营

极客时间-大数据-作业三-HBase 创建表

西伯利亚鼯鼠

Linux之vmstat命令

入门小站

Linux

在线生成制作Pornhub的微信公众号封面图

入门小站

工具

区块链产业政策红利加速释放

CECBC

架构实战营 模块 4 作业

Geek_8c5f9c

架构实战营

2021最新腾讯Java高级面试题总结,Java篇

Java 程序员 面试 后端

2021网易Java高级面试题总结,面试篇

Java 程序员 面试 后端

Druid 查询返回引擎版本困惑的地方

HoneyMoose

Vue进阶(幺陆陆):组件实例 $el 详解

No Silver Bullet

Vue 7月日更 $el

Vue进阶(幺柒柒):Vue 应用 Sass、Scss、Less 和 Stylus

No Silver Bullet

Vue 7月日更 预处理器

面试官:聊聊JVM吧?

程序员阿杜

Java JVM JVM原理

2021最新Java高频精选面试题讲解,绝对干货

Java 程序员 面试 后端

2021最新网易Java面经,面试必会

Java 程序员 面试 后端

2021最新阿里Java面经,一篇文章帮你解答

Java 程序员 面试 后端

开发者必备神器,你真的会用吗?

Jackpop

网络安全现状,一个黑客真实的收入

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞分析

外包学生管理系统的架构设计

架构0期-Bingo

java 虐“狗”日常

喵叔

7月日更

2021谈一下当下最合适的Java架构,感悟分享

Java 程序员 面试 后端

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