提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
转帖|使用教程|编辑:郝浩|2015-03-30 14:33:28.000|阅读 472 次
概述:Visual Studio 跨平台开发实战系列教程,帮助你使用Xamarin进行跨平台移动开发。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
在上一篇文章中, 我们介绍了Xamarin 以及简单的HelloWorld范例, 这次我们针对iOS的专案目录架构以及基本控制项进行说明. 包含UIButton,UISlider,UISwitch, UIImage以及UIWebView控制项。
iOS的使用者界面描述文档, 其副文档名为.xib, 目前在Visual Studio尚未支持直接编辑. 因此在文章中, 我们会先用Xamarin Studio建立专案, 并使用XCode中的Interface Builder布置我们所需的控制项后, 再以Visual Studio 开启专案进行程序代码的撰写. 让我们开始吧.
1. 开启Xamarin Studio. 新增专案 => 选择IOS下的IPhone=>在右边的菜单中选择 Single View Application
2. 在名称及专案名称中输入“Lab01-HelloWorld”
3. 专案建立后, 检视专案的文档案架构.
Main.cs : 应用程序的进入点.
4. 双击Lab01_HelloWorldViewController.xib以开启XCode, 在IB右边的Object Library拖拉Button及Label如下图, 存档后关闭IB, 回到Xamarin Studio
5. 使用Visual Studio 开启Lab01-HelloWorld专案并行以下设定:
由于iOS应用程序的开发模式使用MVC的分层架构. 因此使用者在View布置控制项后, 必须新增与Controller的链接(Connect), 才能在Controller通过程序代码进行控制项的操作. 而此链接在iOS中可以通过Outlet及Action进行.
接下来我们通过实际的范例来了认识Outlet及Action.
1. 在Xamarin Studio中打开Lab1_HelloWorldViewController.xib, 进入Interface Builder.
点选右上方的”Show Assistant editor”图标
此时会出现另一个辅助视窗并带出Lab01_HelloWorldViewController.h头文件
2. 按住”Control”键并将按钮”Click Me” 拖到@interface 及 @end中间的空白处
放开后会出现对话窗, 在name栏位输入“btnClickMe”.
3. 依照步驟2, 在Label 新增一个Outlet, 并命名为lblOutput.
您会发现在header文档中会增加2个property, 确认后关闭Interface Builder
4. 在Visual Studio 中开启Lab01_HelloWorldViewController.designer.cs, 您会发现在文档案中声明了2个属性, 名称与上一个步驟中所命名的名称相同. 并加上了[Outlet] 属性(Attribute)
5. 开启 Lab01_HelloWorldViewController.cs文档. 并在 ViewDidLoad 事件处理函式中加入btnClickMe的TouchUpInside 事件委派及事件处理函式, 如下图所示:
6. 执行专案并测试Click Me 按钮功能是否正常.
由于目前最新版本的Xamain.iOS已支持到C# 5.0. 因此像是匿名方法及Lambda Expression等语法都有支持, 上述的委派及事件处理也可以通过如下代码来编写:
7. 再次点击xib文档. 依照步驟2的方式在Action 1按钮新增一个Action(不是Outlet), 如下图所示, 在Connection部分选择Action, Name的部份输入”actnButtonClick”
在右边的header文档可以看出action与先前加入的Outlet有所不同.
依照上面的方式, 我们将Action 2 按钮加入到同一个Action. 请按下Control鍵, 然后将Action 2按钮拖放到先前的 –(IBAction)actnButtonClick:(id) sender的声明. 此时仅会出现Connect Action的方法, 如下图所示:
8. 关闭Interface Builder, 回到Visual Studio 重新载入ViewController.Designer.cs文档. 可以发现刚刚新增的action, 被转换为没有回传值的方法.
9. 开启Lab01_HelloWorldViewController.cs 在类别中的空白出输入”partial”, Visual Studio 会提示您新增actnButtonClick的事件处理常式. 请输入以下程序代码:
执行程序, 确认执行結果是否符合预期
在上一节中, 我们已经练习过UIButton以及UILabel控制项的操作. 接下来我们将说明其他的基本控制项。
1. 这让我们通过程序动态产生Slider控制项. 首先我们在 Lab01-HelloWorldViewController 类别中新增Slider控制项的声明
1 | UISlider _slider; |
2. 在ViewDidLoad 事件处理中初始化控制项, 并在ValueChanged 事件中将目前slider的值传到Label控制项显示
1 | _slider = newUISlider(newRectangleF(10, 350, View.Frame.Width -20, 50)); |
2 | _slider.MinValue = 0.0f; |
3 | _slider.MaxValue = 100.0f; |
4 | _slider.SetValue(20.0f,false); |
5 | _slider.ValueChanged += (sender, e) => |
6 | { |
7 | this.lblOutput.Text =string.Format("滑桿目前的值为 {0}", ((int)_slider.Value).ToString()); |
8 | }; |
9 | View.AddSubview(_slider); |
3. 执行专案, 试着滑动slider
1. 同样通过程序动态产生, 我们在Lab01_HelloWorldViewController类别中声明
1 | UISwitch _switch; |
2. 在ViewDidLoad 事件处理中初始化控制项, 并在ValueChanged 事件中将目前slider的值传到Label控制项显示
01 | //初始化子控制项Switch |
02 |
03 | _switch = newUISwitch(newRectangleF(10,350,100,30)); |
04 |
05 | _switch.SetState(true,false); |
06 |
07 | //_switch.Hidden = true; |
08 |
09 | _switch.ValueChanged += (sender, e) => |
10 |
11 | { |
12 |
13 | this.lblOutput.Text =string.Format("目前Switch的值为 {0}", _switch.On ?"ON":"OFF"); |
14 |
15 | }; |
16 |
17 | View.AddSubview(_switch); |
3. 执行专案, 试着切换Switch控制项
1. 开启Lab01_HelloWorldViewController.xib. 并放置1个UIImageView对象, 如下图所示:
针对UIImageView对象新增1个Outlet并命名为_img
2. 这里我们借用btnClickMe的事件处理, 指定UIImageView的图片来源.(请在专案中加入图片文档, 这里我们使用flower.jpg)
01 | this.btnClickMe.TouchUpInside += (sender, e) => |
02 |
03 | { |
04 |
05 | //this.lblOutput.Text = string.Format ("我被点了{0}下", ++i); |
06 |
07 | _img.Hidden = false; |
08 |
09 | _img.Image = UIImage.FromFile("flower.jpg"); |
10 |
11 | }; |
上述的程序代码中, 图片的资料来源是预先放置在专案目录中的图片文档.
3. 执行专案后点击ClickMe后的结果如下:
结语
通过上述的介绍, 是不是觉得使用C#来开发iOS的应用程序, 与开发Windows Form应用程序非常相似呢? 相信各位都能举一反三, 运用其他的控制项来建立自己的iOS应用程序, 在接下来的文章中, 将会介绍如何开发iOS的多页面应用程序, 以及程序如何在页面中预览。
本文转载自
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
用C#开发iOS、Android和Windows Phone原生应用程序,一次开发,多平台交付
Xamarin Studio跨平台移动开发(IDE)利器
Xamarin Test Cloud加速移动开发的云端测试利器
Xamarin for Visual Studio用Visual Studio开发原生 iOS, Android 和Windows应用程序
Xamarin.Forms通过一个共享的C#代码库创建iOS,Android和Windows Phone原生UI
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢