QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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

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

关注

评论

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

java培训:JVM的体系结构

@零度

JVM JAVA开发

北京大学拔山讲坛 | OceanBase 阳振坤:特斯拉电动汽车的发展对分布式数据库的启示

OceanBase 数据库

数据库 oceanbase 北京大学 线上讲座

VuePress 博客如何开启本地 HTTPS 访问

冴羽

JavaScript Vue 前端 vuepress 博客搭建

如何在 Ubuntu 18.04 LTS 中配置 IP 地址?

Ethereal

运维接受新挑战!网易云原生运维体系建设之路

网易数帆

Kubernetes 云原生 运维自动化

【C语言】野指针

謓泽

C语言 3月月更 野指针

上云采购季丨云服务器1核2G 低至35元/年,老用户续费6.5折起

阿里云弹性计算

阿里云 云服务器 ECS 采购季

大数据时代下,App数据隐私安全你真的了解么?

移动研发平台EMAS

阿里云 开发者工具 数据安全 #EMAS

网络安全kali渗透学习 web渗透入门 Metasploit---基于tcp协议收集主机信息

学神来啦

网络安全 信息安全 kali kali Linux

演讲实录|云原生时代,OAM模型加持下的应用交付与管理实践

York

运维 云原生 OAM 应用开发

如何为你的客户创建完美的 SaaS 产品文档

小炮

产品 运营

CPU占用率爆满,服务器遭遇挖矿如何排查

山河已无恙

Linux 3月月更

OCR产业应用实战,多类别电表读数识别方案详解

百度大脑

3DCAT首届行业生态交流会|升大科技CEO邱杰:5G云渲染助力企业培训

3DCAT实时渲染

XR 云渲染 元宇宙 实时渲染

在 CRM WebClient UI 中使用纯 JavaScript 显示 3D 足球效果

汪子熙

JavaScript WebGL 3D模型 CRM 3月月更

Curve 加入 PolarDB 开源数据库社区,强化分布式共享存储

网易数帆

数据库 postgresql 云原生 分布式存储 polarDB

在数字化与绿色的双轮之间,华为为全球企业搭建一道“车轴”

脑极体

群晖 NAS 安装的 Docker MySQL 数据库没有办法通过局域网连接

HoneyMoose

WorkPlus数据中台:企业降本增效新引擎

BeeWorks

2022年2月国产数据库大事记

墨天轮

数据库 opengauss TiDB 国产数据库 polarDB

让体验可量化,火山引擎视频云2022新进阶

ToB行业头条

客户之声|客如云上线 OceanBase 小记

OceanBase 数据库

数据库 oceanbase 客户实践 客如云

TCP协议:如何保证页面文件能被完整送达浏览器?

Tristan

前端 网络层 TCP协议

银行业数据安全建设要点分析2022

易观分析

银行行业

FinClip首届黑客马拉松 "快码加编”招募中,邀你挥洒创意赢万元现金大奖

FinClip

小程序 移动开发 APP开发 小程序插件

如何避免黑客攻击?国内首个云端加密代码库来帮忙

阿里云云效

阿里云 云原生 云效 代码安全 代码加密

大数据培训:Spark 性能调优详解

@零度

spark 大数据培训

无依赖单机尝鲜 Nebula Exchange 的 SST 导入

NebulaGraph

数据库 大数据 图数据库

web前端培训:2022前端基础面试题

@零度

CSS JavaScript 前端开发

虎符交易所产品再升级 正式全新上线AMM流动性池

区块链前沿News

虎符交易所 AMM

Linux运维工程师必知的服务器备份工具:Rsnapshot!

Ethereal

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