如何 0 成本启动全员 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:322050
用户头像

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

关注

评论

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

Seata1.4.0源码编译

Fox666

seata

游戏夜读 | 游戏中的确定性

game1night

高并发高性能服务器是如何实现的?

赖猫

c++ 高并发 linux开发 服务器开发 多线程高并发

LeetCode题解:69. x 的平方根,牛顿迭代法+递归,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

备战金三银四,”吊打各厂面试官“ ,为你准备了这份堪称“神作”的Java面试宝典

Java架构之路

Java 程序员 架构 面试 编程语言

【盘点2020】连续8个月霸榜,年度最佳公有云竟然是它?

博睿数据

产品经理训练营-第三周作业

羽室

5G专网是个大西瓜(二):碰撞之谜

脑极体

硬盘的秘密

yes

机械硬盘

黄际洲获CCF优秀博士学位论文奖 搜索推荐技术创新成果显著

爱极客侠

官宣 | Atlassian 针对中国市场推出适用于所有团队的本地化部署方案!

Atlassian

项目管理 DevOps 敏捷 Atlassian Jira

基于Segment Routing技术构建新一代骨干网:智能、可靠、可调度(二)

UCloud技术

云计算 运维 云网络

全面提升企业的主动防御能力,UCloud全新架构云安全中心正式公测!

UCloud技术

网络安全 恶意解析 云安全 安全漏洞

日记 2021年2月3日(周三)

Changing Lin

个人感悟 2月春节不断更

5 个最值得注意的开源集中式日志管理工具

程序员石磊

Linux 日志 性能监控 日志监控

学习感恩

谷鱼

Linux-Lab 入门:详细步骤分解

贾献华

Linux 嵌入式 Linux Kenel 开发板 boot

100+标杆案例和1个减法:华为“懂行100”给2021带来了什么?

脑极体

Nacos源码编译

Fox666

nacos

基于Segment Routing技术构建新一代骨干网:智能、可靠、可调度(一)

UCloud技术

云计算 网络 云网络

商务部发力数字商务:鼓励企业开展区块链等先进技术创新应用

CECBC

区块链

💯 关于 TCP 三次握手和四次挥手,满分回答在此

飞天小牛肉

面试 后端 计算机网络 TCP/IP 2月春节不断更

深入理解nodejs的HTTP处理流程

程序那些事

node.js HTTP 异步编程 程序那些事

分析 BAT 互联网巨头在大数据方向布局及大数据未来发展趋势

五分钟学大数据

大数据 2月春节不断更

拆散的乐高怎么装起来

李小腾

区块链时代,企业如何构筑竞争力的护城河?

CECBC

区块链

大厂面试算法到底有多重要?学会这份算法宝典,随便暴打头条面试官!

Java架构之路

Java 程序员 架构 面试 编程语言

冰河去腾讯了?

冰河

程序员 程序人生 冰河 冰河技术

非科班Java面试快手三面,如果不是疫情,offer已经到手了

Java架构之路

Java 程序员 架构 面试 编程语言

SpringCloud 从入门到精通17---Sentinel降级/热点规则

Felix

链上公开透明 链下迷雾重重 区块天眼能否拨开行业疑云

CECBC

区块链

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