百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

Visual Studio跨平台开发实战(2):Xamarin.iOS基本控制项介绍

liuian 2025-07-23 16:11 4 浏览

前言

在上一篇文章中, 我们介绍了Xamarin 以及简单的HelloWorld范例, 这次我们针对iOS的专案目录架构以及基本控制项进行说明. 包含UIButton,UISlider,UISwitch, UIImage以及UIWebView控制项。

iOS的使用者界面描述文档, 其副文档名为.xib, 目前在Visual Studio尚未支持直接编辑. 因此在文章中, 我们会先用Xamarin Studio建立专案, 并使用XCode中的Interface Builder布置我们所需的控制项后, 再以Visual Studio 开启专案进行程序代码的撰写. 让我们开始吧.

建立专案及使用Xcode Interface Builder

1. 开启Xamarin Studio. 新增专案 => 选择IOS下的IPhone=>在右边的菜单中选择 Single View Application

2. 在名称及专案名称中输入“Lab01-HelloWorld”

3. 专案建立后, 检视专案的文档案架构.

Main.cs : 应用程序的进入点.

  • AppDelegate.cs : 主要的应用程序类别(class), 并接听来自作业系统的事件及相对应的事件处理.
  • Lab01_HelloWorldViewController.cs : 负责主银幕的生命周期, 也就是MVC分层的Controller.
  • Lab01_HelloWorldViewController.designer.cs : 包含使用者界面中对象的定义及动作(Action)的声明.
  • Lab01_HelloWorldViewController.xib : 主要的使用者界面定义文档, 也就是MVC分层的View. XML格式, 可通过Xcode的Interface Builder(IB)进行编辑.
  • Info.plist : 应用程序的资讯文档, 如名称, 版本, 图示等等.

4. 双击
Lab01_HelloWorldViewController.xib以开启XCode, 在IB右边的Object Library拖拉Button及Label如下图, 存档后关闭IB, 回到Xamarin Studio

5. 使用Visual Studio 开启Lab01-HelloWorld专案并行以下设定:

  • 在工具列=>建置=>组态管理员, 将平台设为iPhoneSimulator
  • 开启专案属性, 选择iOS Application节点并输入Application Name, Identifier, Version等资讯. 最下面的”Deployment Target” 表示目标装置的最低作业系统版本. 此处选择6.0, 表示此应用程序可执行在iOS 6.0以后的版本.
  • 执行专案: iPhone 模拟器将会启动并显示先前步驟所设计的页面.

Outlet与Action

由于iOS应用程序的开发模式使用MVC的分层架构. 因此使用者在View布置控制项后, 必须新增与Controller的链接(Connect), 才能在Controller通过程序代码进行控制项的操作. 而此链接在iOS中可以通过Outlet及Action进行.

  • Outlet : 以属性的方式链接View及Controller. 可以对Outlet附加event handler 或呼叫方法
  • Action :类似WPF的command property. 可以将多个control bind到同一个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控制项的声明

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) =>
7 this.lblOutput.Text =string.Format("滑桿目前的值为 {0}", ((int)_slider.Value).ToString);
9 View.AddSubview(_slider);

3. 执行专案, 试着滑动slider

1. 同样通过程序动态产生, 我们在
Lab01_HelloWorldViewController类别中声明

03_switch = newUISwitch(newRectangleF(10,350,100,30));
05_switch.SetState(true,false);
09_switch.ValueChanged += (sender, e) =>
13this.lblOutput.Text =string.Format("目前Switch的值为 {0}", _switch.On ?"ON":"OFF");

3. 执行专案, 试着切换Switch控制项

1. 开启
Lab01_HelloWorldViewController.xib. 并放置1个UIImageView对象, 如下图所示:

针对UIImageView对象新增1个Outlet并命名为_img

2. 这里我们借用btnClickMe的事件处理, 指定UIImageView的图片来源.(请在专案中加入图片文档, 这里我们使用flower.jpg)

01this.btnClickMe.TouchUpInside += (sender, e) =>
05//this.lblOutput.Text = string.Format ("我被点了{0}下", ++i);
09_img.Image = UIImage.FromFile("flower.jpg");

上述的程序代码中, 图片的资料来源是预先放置在专案目录中的图片文档.

3. 执行专案后点击ClickMe后的结果如下:

结语

通过上述的介绍, 是不是觉得使用C#来开发iOS的应用程序, 与开发Windows Form应用程序非常相似呢? 相信各位都能举一反三, 运用其他的控制项来建立自己的iOS应用程序, 在接下来的文章中, 将会介绍如何开发iOS的多页面应用程序, 以及程序如何在页面中预览。

本文转载自CSDN博客

本站文章除注明转载外,均为本站原创或翻译

相关推荐

VS Code当中的15个神仙插件,值得收藏

VisualStudioCode是一款轻量级但功能强大的源代码编辑器,适用于Windows、macOS和Linux。内置了对JavaScript、TypeScript和Node.js...

制作简易页面计算器的详细教程和代码分享

今天教大家一个比较简单实用的Web小应用:简单计算器。这个案例比较简单、比较直观,适合小孩或者初学编程者进行编程入门的练习。用html进行入门编程练习优点非常多:IDE框架比较轻,VSCode安装方便...

CSS视觉格式化模型,你真的了解么?

CSS视觉格式化模型(visualformattingmodel)是用来处理文档并将它显示在视觉媒体上的机制。这是CSS2.1的一个基础概念。视觉格式化模型根据CSS盒模型为文档的每个元素生成0...

用Cursor开启JAVA+AI生涯(启用java script)

Cursor是基于VSCode开发的一款编辑器,支持多种语言的开发编辑。与传统的开发工具相比,它有多种优势:与AI无缝集成,响应速度快,占用内存小。但很多同学在"起步"过程中遇到了...

C# WinForms中maskedTextBox控件使用的简单示例

在C#WinForms中,MaskedTextBox是一个用于输入格式化文本的控件。它允许您定义一个掩码(Mask),指定输入的文本应该遵循的特定格式。以下是一个简单的示例,演示如何在WinForm...

C#编程基础(看这一篇就够了)(c#编程实例100篇)

C#及其开发环境简介C#概述C#是一个现代的、通用的、面向对象的编程语言,由微软(Microsoft)开发,经Ecma和ISO核准认可。它由AndersHejlsberg和他的团队在.NET框架开发...

Visual Studio Package 插件开发(Visual Studio SDK)

背景  这段时间公司新做了一个支付系统,里面有N个后台服务,每次有更新修改,拷贝打包发布包“不亦乐乎”。。。于是我想要不要自己定制个打包插件。  部分朋友可能会认为,有现成的可以去找一个,干嘛不用持续...

10个必备的Visual Studio Code (VS code)插件

我基本上每天都用vscode,我喜欢的小巧,开源,免费并且非常强大。尤其它非常多的插件可以免费使用。这里我把经常用插件介绍给大家,希望大家留言讨论我把VScode插件分两类,一类是处理可视化的,...

【推荐】一款超牛×的Visual Studio 2022插件

今天给大家推荐一款超级NB的VisualStudio2022插件——CodeMain,这是一个代码格式化及处理的插件。 一、打开添加扩展窗口;  二、查找扩展;  三、管理扩展;  四、CodeM...

Visual Studio跨平台开发实战(2):Xamarin.iOS基本控制项介绍

前言在上一篇文章中,我们介绍了Xamarin以及简单的HelloWorld范例,这次我们针对iOS的专案目录架构以及基本控制项进行说明.包含UIButton,UISlider,UISwitch...

Visual Studio Code(visual studio code干什么用的)

VisualStudioCode(简称VSCode是一款由微软开发的轻量级、强大而且免费的代码编辑器。它不仅支持多种编程语言,如Python、JavaScript、Java等,还拥有丰富的插件生...

团队协作-代码格式化工具clang-format

环境:clang-format:10.0.0前言统一的代码规范对于整个团队来说十分重要,通过git/svn在提交前进行统一的ClangFormat格式化,可以有效避免由于人工操作带来的代码格式问题。C...

Visual Studio 2022 辅助插件介绍

在软件开发的世界里,效率和质量是永恒的追求。VisualStudio2022作为一款功能强大的集成开发环境(IDE),通过引入各种辅助插件,能够极大地提升开发者的编码效率、代码质量和开发体验。本...

五款安卓程序 帮助管理你的网络存储

2015-09-1605:46:00作者:赵为民安卓设备以及非常普及,利用安全可以很好的管理的你各种服务……也包括你的存储。当然,现在几乎所有的NAS存储厂商都提供了一个应用程序,让你利用安卓设备...

局域网一个飞牛Nas,一个群晖Nas,如何互传文件?

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:科技菜菜家里有一个入门群晖Nas一直在做照片备份,现在有新添了一个小主机飞牛Nas。现在遇到了一个新问题,备份到群辉的多个手机照片已经超过5...