产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

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

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

关注

评论

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

英雄无敌3 for Mac(策略游戏)支持M1 v4.507高清中文版

iMac小白

Navicat Premium for Mac(多协议数据库管理工具) 16.3.4中文激活版

iMac小白

Bored Ape Yacht Club NFT 概览与数据分析

Footprint Analytics

NFT

已解决org.springframework.boot.context.embedded.EmbeddedServletContainerException嵌入式Servlet容器异常的正确解决方法

小明Java问道之路

DAPP合约代币矩阵公排系统开发

l8l259l3365

一文了解Lint工具的优缺点,以及它与高级静态分析工具的比较

龙智—DevSecOps解决方案

linter lint

【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit

HarmonyOS SDK

HarmonyOS

少走弯路 不踩坑 Datadog 的替代品来了

可观测技术

可观测性

AutoCAD 2024 for Mac(cad设计绘图工具) v2024.3中文激活版

iMac小白

防水堡是什么?各行各业怎么定义?

行云管家

网络安全 防水堡 行云防水堡

专为大模型训练优化,百度集合通信库 BCCL 万卡集群快速定位故障

Baidu AICLOUD

故障定位 大模型训练 集合通信库 NCCL

破局数据分析滞后难题,赋能企业高速增长的指标管理解决方案

袋鼠云数栈

指标体系 指标 指标管理

SecureCRT for Mac(专业终端SSH工具)附注册码 v9.4.3正式版

iMac小白

AnyGo for Mac(虚拟定位软件) 6.9.5免激活版

iMac小白

编程中有哪些好的习惯一开始就值得坚持?

小齐写代码

面试必备:一线大厂Redis缓存设计规范与性能优化

EquatorCoco

redis 缓存 程序员 面试

暗黑2:毁灭之王 for Mac(含各职业存档) v1.14d 中文单机移植版

iMac小白

Acrobat Pro DC 2023 for Mac(PDF编辑器)中文破解版下载

iMac小白

微信多开 WechatTweak for Mac(微信多开、消息防撤回工具) v3.8.6(28078)中文集成版

iMac小白

聚道云软件连接器2月新增应用/产品更新合集

聚道云软件连接器

功能更新

一站式数据库上云迁移、同步与集成平台 DTS 的设计实践

Baidu AICLOUD

数据库迁移 数据库集成

VMware ESXi 8.0U2b 发布下载 - Broadcom VMware 首次重大更新

sysin

云计算 虚拟化 esxi

NFTScan NFT API 在 Web3 钱包追踪器上的开发应用

NFT Research

NFT NFTScan API】

QPS 提升 10 倍!滴滴借助 StarRocks 物化视图实现低成本精确去重

StarRocks

数据库 数据仓库 数据分析

立即报名Atlassian Team’24,与龙智一同踏上前往数字服务的创新之路

龙智—DevSecOps解决方案

Atlassian

智能咖啡厅助手:人形机器人 +融合大模型,行为驱动的智能咖啡厅机器人

汀丶人工智能

人工智能 深度学习 智能机器人

龙智联合Atlassian举办DevSecOps研讨会,Jama总监分享Jama与Jira集成经验,助力产品开发复杂性管理

龙智—DevSecOps解决方案

Jira jama

如何做代币分析:以 LEO 币为例

Footprint Analytics

blockchain Token

Downie 4 for Mac(最好用的视频下载软件) 4.7.2直装版

iMac小白

Termius for Mac(多协议远程管理软件) 8.4.0激活版

iMac小白

2024年工控人职场求生之路

AIRIOT

工控 智慧系统 工控工程师

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