在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

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

关注

评论

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

为实时智能体而建的 AI Infra丨Real-Time AI Infra 技术专场@RTE2025 回顾

RTE开发者社区

1688店铺所有商品API完整指南

Datafox(数据狐)

1688API 1688店铺所有商品接口 1688店铺商品采集 1688店铺所有商品API

竞品月入50万流量的秘密,我用这个免费工具全看到了,AI出海新手的流量分析救星

陆通

出海

出海企业必看:5款专为出海业务设计的出海媒体监测软件评测

沃观Wovision

出海 海外社交媒体监控 出海舆情 媒体监测 社媒分析

第50届ICPC亚洲区域赛·沈阳站圆满落幕,非凸科技倾力支持

非凸科技

光联SD-WAN方案加速新能源汽车企业迈向全球智能网络新纪元

光联世纪

YashanDB数据库日志管理与故障恢复关键技术解析

数据库砖家

AI助教智能教学系统:为教师插上数据的翅膀

上海拔俗

AI 教学质量监测平台:让课堂质量看得见、改得快

上海拔俗

TorrentPier论坛管理员面板SQL注入漏洞分析

qife122

SQL注入 漏洞分析

新一代电机制造行业MES 智能化升级方案

万界星空科技

数字化转型 mes 万界星空科技mes 电机行业 电机MES

AI 智慧评阅系统:给老师的 “批改加速器”,让评价更精准

上海拔俗

2025年数据管理与计算机科学国际学术会议 (ICDMCS 2025)

搞科研的小刘

数据管理 学术会议

Welcart电商插件授权漏洞导致未授权信息泄露

qife122

网络安全 WordPress插件

大数据-164 Apache Kylin Cuboid 剪枝实战:Derived 维度与膨胀率控制

武子康

Java 大数据 kylin 分布式 Apache Kylin

AIOps 架构解析

俞凡

人工智能 运维

神舟二十一号|2030年前实现中国人登陆月球的目标不动摇

DevOps和数字孪生

JSAPIThree 事件系统学习笔记:处理交互的基础

map_3d_vis

初学者 mapvthree 事件系统 addEventListener

[大厂实践] JunoDB:PayPal 新一代基础设施

俞凡

架构 大厂实践

1688图片搜索API | 上传图片秒找同款 | 相似商品精准推荐

Datafox(数据狐)

1688API 1688图片搜索接口 1688拍立淘接口 1688图片搜索API 1688图片识别商品接口

上下文管理策略综述

Baihai IDP

AI LLM Baihai IDP 模型上下文管理

企业IM:从沟通工具到数字化工作平台

BeeWorks

即时通讯 IM 私有化部署

架构债务与技术债务的深度解析

qife122

企业架构 架构债务

ManageEngine卓豪-cmdb自动化运维

ServiceDesk_Plus

CMDB 卓豪

PandaWiki:重新定义产品技术文档的AI驱动革命

百川云开发者

产品文档 开源知识库

骁龙大赛-技术分享第三期 直播问题&答疑整理

极市平台

KWDB 精彩亮相 2025 开放原子开发者大会

KaiwuDB

数据库 开放原子基金会 KWDB开源数据库

出海媒体监测网站终极清单:从免费工具到企业级平台全收录

沃观Wovision

出海 出海舆情 出海媒体监测 社媒分析

《2025华彩算力行业创新应用分析报告》发布

科技经济

定档12月26日!星宸科技邀您参加2025开发者大会暨产品发布会

科技经济

2025年体育科技与运动表现分析国际学术会议(ICSTPA 2025)

搞科研的小刘

学术会议 体育科技

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