2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

预算有限也能高效运维?ManageEngine卓豪高性价比解决方案

ServiceDesk_Plus

ManageEngine卓豪

AI赋能舆情监测:从量变到质变的智能跃升

沃观Wovision

人工智能 沃观Wovision 海外舆情监测

空间Web标准:重塑设备交互的未来

qife122

人工智能 空间Web

YashanDB TO_BASE64函数

YashanDB

13kB JavaScript实现的MOBA游戏网络同步技术

qife122

JavaScript 游戏开发

告警自动化处理:让运维工作更高效、更省心

智象科技

自动化 告警设置 IT运维 一体化运维

强化学习中慢速网络学习更快

qife122

神经网络 强化学习

JSON 日志分析的“正确姿势”:阿里云 SLS 高效实践指南

阿里巴巴云原生

json 阿里云 云原生

YashanDB TO_CHAR函数

YashanDB

AI在实际生成环境中的提效实践

百度Geek说

智象 ITSM 三大能力,为 IT 服务质量构筑可持续的确定性

智象科技

运维‘ ITSM软件 ITSM解决方案 一体化运维

EventLog Analyzer | 助力企业完成等保2.0的重要日志管理工具

运维有小邓

日志分析 日志审计 等保2.0

Function AI 助力用户自主开发 MCP 服务,一键上云高效部署

阿里巴巴云原生

阿里云 云原生 MCP

YashanDB TIMESTAMP_TO_SCN函数

YashanDB

AI算力平台统一监控方案:让AI算力资源透明化

智象科技

运维 AI算力 一体化运维

「从工单困局到智能闭环 —— 一体化运维的革新之路」

智象科技

ITSM IT运维 运维系统 一体化运维 工单管理

阿里云可观测 2025 年 7 月产品动态

阿里巴巴云原生

阿里云 云原生 可观测

超实用!一篇文章讲透分布式锁,建议收藏!

王磊

【Mysql】业务视角下,SQL字段处理专题

LingDong Jey

sql

自动巡检系统实时监测设备性能的“秘密武器”

智象科技

运维 一体化运维 自动化巡检 自动发现

深度分析前端优化工具Performance面板!

OpenTiny社区

开源 性能优化 前端

YashanDB TIMESTAMPDIFF函数

YashanDB

长连接网关技术专题(十三):基于Netty的携程高性能网关异步改造实践

JackJiang

网络编程 即时通讯 IM

Interspeech 2025「语音无障碍项目」挑战赛落幕

算AI

人工智能 算法 语音 ASR

如何实现 AI Agent 自主发现和使用 MCP 服务 —— Nacos MCP Router 部署最佳实践

阿里巴巴云原生

阿里云 云原生 nacos MCP

MySQL 备份利器 Xtrabackup 全解析:从部署到恢复的实战指南

袋鼠云数栈

MySQL 数据库 mysql备份 XtraBackup

做度量,你的研发数据足够“干净”吗?——浅谈度量中的数据治理

思码逸研发效能

研发效能 研发效能度量 研发效能管理 思码逸

【深度】企业 AI 落地实践(四):如何构建端到端的 AI 应用观测体系

阿里巴巴云原生

阿里云 Serverless 云原生

数据猿专访 | 数据堂COO何鸿凌:大模型时代,数据标注战略价值越发凸显

数据堂

人工智能 AI 数据标注 大模型 版权数据集

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