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

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

关注

评论

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

纵横贯通的全面预算管理体系,从这里开始!

用友BIP

全面预算

修改SD WebUI为kitchen-theme

IT蜗壳-Tango

云原生时代数据治理的变革与创新

酷克数据HashData

一套管理工具构建敏捷、多维、高效的全面预算管理

用友BIP

全面预算

低代码平台的核心能力有哪些?

力软低代码开发平台

福昕软件与北信源达成战略合作,构建PDF文档安全新格局

新消费日报

2023-06-26:在大小为 n x n 的网格 grid 上,每个单元格都有一盏灯,最初灯都处于 关闭 状态 给你一个由灯的位置组成的二维数组 lamps 其中 lamps[i] = [rowi,

福大大架构师每日一题

Go 算法 rust 福大大架构师每日一题

云游世界NFT卷轴游戏dapp系统开发合约定制

开发微hkkf5566

焱融构建多云数据存储平台 重塑云中数据活力

焱融科技

文件存储 高性能存储 #分布式文件存储

手把手教你实战TDD

快乐非自愿限量之名

TDD 开发框架

看数智底座如何助力大型车企向世界一流汽车企业迈进

用友BIP

数智底座 Pass平台

用代码玩转迷你图:手把手教你用编程语言打造简洁易读的数据图表!

不在线第一只蜗牛

代码 框架开发

一文梳理清楚低代码开发平台

高端章鱼哥

低代码 低代码开发平台 可视化开发

聊聊信仰的力量

互联网工科生

程序员 信仰

【直播预告】HarmonyOS极客松赋能直播第二期:数据库与网络连接开发

HarmonyOS开发者

HarmonyOS

[Paddle] ERNIE-Layout 使用测试 - 文心多语言跨模态布局增强文档智能大模型

alexgaoyh

paddle engine-layout 电子文档 提取

低代码开发平台:解锁无限创新,演绎科技新奇

EquatorCoco

低代码 科技创新

JavaScript 实践+理论(总结篇):作用域、闭包、this、对象原型

Immerse

闭包 原型链 作用域 this 原型模式

这问题巧了,SpringMVC 不同参数处理机制引发的思考 | 京东云技术团队

京东科技开发者

spring springmvc HTTP 请求方式 企业号 6 月 PK 榜

使用 ProcessBuilder API 优化你的流程

快乐非自愿限量之名

数据库 框架开发 开发语言 process

前端文件上传的几种交互造轮子 | 京东云技术团队

京东科技开发者

前端 Vue3 文件上传 文件上传下载 企业号 6 月 PK 榜

报名开启!2023大模型应用创新挑战赛来啦

飞桨PaddlePaddle

人工智能 百度 paddle

【FAQ】关于华为地图服务定位存在偏差的原因及解决办法(二)——仅适用于Location 6.7.0.300及之后的版本

HarmonyOS SDK

HMS Core

聊聊缓存世界的扫地僧

勇哥java实战分享

软件测试/测试开发丨Git常用命令学习笔记

测试人

git 程序员 软件测试 测试开发

从2PC和容错共识算法讨论zookeeper中的Create请求 | 京东云技术团队

京东科技开发者

zookeeper 分布式事务 zookeeper分布式锁 企业号 6 月 PK 榜 容错共识算法

Web3架构之思 - Direc Exhcange Mesh 项目介绍(一)

Joe

Web 3.0 分布式结构 多运行时

软件开发不需要会编码,谈谈我的开发捷径

互联网工科生

软件开发 低代码 开发

6个常见的IB网络不通问题

华为云开发者联盟

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

千亿资产去哪了,资产管理如何摸清家底?

用友BIP

资产云

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