写点什么

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

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

关注

评论

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

TiDB容器化的管理利器--TiDB Operator

TiDB 社区干货传送门

集群管理 新版本/特性发布 安装 & 部署 新版本/特性解读

监控告警处理之tidb_server_critical_error_total

TiDB 社区干货传送门

监控 故障排查/诊断

TiCDC 源码解读(6)- TiCDC Puller 模块介绍

TiDB 社区干货传送门

TiDB 源码解读 TiCDC 源码解读

TiDB SQL调优案例之避免TiFlash帮倒忙

TiDB 社区干货传送门

性能调优 实践案例 故障排查/诊断

搭建阿里云 TiDB 的灾备,让我安欣睡个好觉

TiDB 社区干货传送门

实践案例 安装 & 部署 备份 & 恢复 数据库架构设计

将TiDB各服务组件混布到物理机集群和K8S环境

TiDB 社区干货传送门

实践案例 集群管理 管理与运维 安装 & 部署 数据库架构设计

文盘Rust -- 安全连接 TiDB/Mysql

TiDB 社区干货传送门

开发语言

Java 8 的异步利器:CompletableFuture源码解析(建议精读)

Java你猿哥

Java ssm java8 源码解析

数据湖选型指南|Hudi vs Iceberg 数据更新能力深度对比

袋鼠云数栈

数据湖

详解ResNet 网络,如何让网络变得更“深”了

华为云开发者联盟

人工智能 神经网络 华为云 华为云开发者联盟 企业号 3 月 PK 榜

你可能并不了解 Milvus

Zilliz

SaaS Milvus 社区活动

携程 x TiDB丨应对全球业务海量数据增长,一栈式 HTAP 实现架构革新

TiDB 社区干货传送门

阿里是如何使用分布式架构的?阿里内部学习手册分享

Java你猿哥

Java 分布式 微服务 分布式架构

云图说丨初识华为云安全云脑——新一代云安全运营中心

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

基于 TiCDC 的 TiDB 复制集群的计划内和计划外切换验证步骤

TiDB 社区干货传送门

性能调优 实践案例 故障排查/诊断 数据库架构选型

瞄准2023教育春招,百度营销多措并举,推出创新型行业营销解决方案

极客天地

官宣:OpenDAL 成功进入 Apache 孵化器

Databend

设计消息队列存储消息数据的 MySQL 表格

Geek_7d539e

基于阿里云数据库TiDB的性能压测初体验

TiDB 社区干货传送门

性能测评 6.x 实践

“奇遇未来”专访:一个小众、专业的产品经理实训品牌

极客天地

百度“文心一言”申请服务测试企业达7.6万,股价拉升涨幅近15%

极客天地

Dr-autosync TiDB 集群的计划内和计划外切换验证步骤

TiDB 社区干货传送门

实践案例 集群管理 安装 & 部署 数据库架构选型 6.x 实践

未来智安再获安全牛《网络安全优质初创企业HOT50》推荐

未来智安XDR SEC

TiCDC 源码解读(5)-- TiCDC DDL 事件处理逻辑 与 Filter 实现介绍

TiDB 社区干货传送门

TiCDC 源码解读

云数据库TiDB免费试用初体验

TiDB 社区干货传送门

版本测评 安装 & 部署

Apache APISIX 3.2.0 LTS 正式发布

API7.ai 技术团队

BSN-DDC基础网络详解(五):接入DDC网络(2)

BSN研习社

BSN-DDC基础网络

网易携手昇腾AI打造玉知-悟空图文理解大模型,做更“懂你”的产品

极客天地

HummerRisk 使用教程:主机检测

HummerCloud

华秋工艺分享:第八道主流程之丝印文字流程

华秋电子

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