写点什么

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

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

关注

评论

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

In-depth analysis IPQ5332 vs IPQ9570 WiFi7 motherboard CPU

wifi6-yiyi

免费高效!3步实现Llama3模型远程访问与协作

贝锐

AIGC Llama3 贝锐

一站式解决方案:10款项目型企业系统选购指南

爱吃小舅的鱼

项目管理

人社大赛算法赛场解题思路分享+冠军+破灭刀锋

阿里云天池

JNPF再进化,低代码革命让数字化无处不在

不在线第一只蜗牛

低代码

视频云流化是什么?有哪些好处

3DCAT实时渲染

云流化 云流化PaaS平台 实时渲染云流化

如何判断全面预算和EPM软件架构是否符合技术规范?

智达方通

数字化转型 多维数据库 企业绩效管理系统 管理会计信息化 新ERP

【攻略】第三届数据库大赛创新上云性能挑战赛-高性能分析型查询引擎赛道-冠军

阿里云天池

多链钱包系统开发(开发原理)丨多链钱包开发源码模式

V\TG【ch3nguang】

论低代码平台在业务系统中的多种应用形态

快乐非自愿限量之名

低代码 业务开发

阿里云数智服务创新挑战赛总决赛铜奖比赛攻略_NJUSME队

阿里云天池

9月7-8日,Rust China Conf 2024 来啦!

Mike Tang

开源 rust 上海 rust conf rust开发者大会

AI+营销:AI赋能企业大客户经营更高效、更智能

用友BIP

智谱清言 App 面向 C 端开放 AI 视频通话服务;谷歌 GameNGen:神经网络驱动的实时游戏引擎丨RTE 开发者日报

声网

天翼云HBlock:打造高效、安全、可扩展的云存储体验

百里丶落云

磁盘 数据库· HBlock #天翼云 #HBlock

openGauss- 索引推荐

Gauss松鼠会

opengauss

【vue3】详解单向数据流,大家千万不用为了某某而某某了

快乐非自愿限量之名

JavaScript vue.js 前端

前波士顿咨询Platinion董事总经理陈果加入望繁信科技

望繁信科技

流程挖掘 流程资产 流程智能

揭秘| 用友坚持做大模型的原因

用友BIP

合资新能源价值新标准 MAZDA EZ-6领衔亮相2024成都国际车展

Geek_2d6073

JNPF低代码开发平台如何助力传统制造业破茧成蝶

EquatorCoco

低代码

实战演练:利用京东API一键抓取商品详情

技术冰糖葫芦

api 网关 API Explorer API 策略

用友YonData如何刷新企业数据管理与应用新高度?

用友BIP

源于清华的开源时序数据库IoTDB刷新世界纪录

Apache IoTDB

场景题:如何提升Kafka效率?

王磊

最高等级!腾讯云AI代码助手获中国信通院代码大模型评估4+级

Geek_2d6073

体验了下豆包MarsCode编程助手,惊艳到我了!

左诗右码

AI

大模型营销战,“砸钱”能缓解商业化焦虑?

趣解商业

百度 腾讯 互联网 大模型

AI自动化副业创收班手把手带你提升副业收益

霍格沃兹测试开发学社

打造高效农业项目 10款农业建设管理系统购买指南

爱吃小舅的鱼

项目管理 农业

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