写点什么

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

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

关注

评论

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

[ARTS打卡] week 01

Mau

ARTS 打卡计划

clang-format 使用与集成介绍

Geek_101627

后疫情时代,区块链的发展迎来曙光!

CECBC

CECBC 区块链技术

MySQL 可重复读,差点就我背上了一个 P0 事故!

楼下小黑哥

Java MySQL

DDD 中的那些模式 — 使用 Specification 管理业务规则

Joshua

设计模式 领域驱动设计 DDD 架构模式

爬虫框架Scrapy应用实践-淘宝保险频道数据抓取【2】-抓包分析

hadesxiong

Python 爬虫 保险 Scrapy

如何设置线程池参数?美团给出了一个让面试官虎躯一震的回答。

why技术

Java 源码分析 面试 线程池

数据产品经理实战-数据门户搭建(上)

第519区

数据中台 开发数据

ARTS-1

你当像鸟飞往你的山

ARTS 打卡计划

5G时代下应用的安全防御研究

Nick

5G 5G网络安全 5G安全

ARTS打卡计划_第一周

叫不醒装睡的人

ARTS 打卡计划

ARTS week 3

刘昱

Flutter开发环境配置

玉龙BB

flutter android vscode

Apache DolphinScheduler新特性与Roadmap路线

代立冬

大数据 数据中台 工作流调度 海豚调度 数据湖调度

ARTS 打卡 WEEK2

编程之心

ARTS 打卡计划

区块链技术大显身手,仅用20分钟就打完一场官司!

CECBC

CECBC 区块链技术 数字版权 存证

Java日志门面系统

泛泛之辈

Java 日志 slf4j

深入计算机底层,从几本靠谱的书开始

HackMSF

计算机工作原理

ARTS-01

NIMO

ARTS 打卡计划 ARTS活动

2万字长文带你细细盘点五种负载均衡策略。

why技术

Java 负载均衡 源码分析 面试 dubbo

我的编程之路 -6(新时代)

顿晓

android 编程之路 时代

那些会阻碍程序员成长的细节[2]

MavenTalker

程序员 程序人生

重学 Java 设计模式:实战单例模式

小傅哥

设计模式 编程思维 重构 优化代码

像孩子一样认识新事物 —— 读《终身幼儿园》

YoungZY

学习 读书笔记 读书

眼中有码,心中无码

小眼睛聊技术

学习 深度思考 程序员 最佳实践 算法

ARTS打卡第一周

GKNick

体验一次简洁的代码

你当像鸟飞往你的山

如何使用 Apache CXF 快速实现一个 WebService

Rayjun

Java WebService CXF

Mysql索引不会怎么办?6000字长文教会你

Super~琪琪

MySQL 数据库 sql 索引

关爱孩子的心理建设

Neco.W

人生 感悟 教育

如何做好Code Review?

架构精进之路

Code Review

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