IOS Apps 开发(Swift)(4)——Connect the UI to Code(2)

微信小程序 - 接入腾讯地图 SDK 及详细使用教程,结合小程序 mpa 地图组件展示腾讯地图(基础使用 / 授权当前位置 / 配合小程序map组件的使用 / 腾讯地图逆地址解析 / 坐标系的转化) 微信小程序使用腾讯地图完整流程,微信小程序 接入腾讯地图,如何在微信小程序中接入腾讯地图,微信小程序引入腾讯地图API方法,腾讯地图小程序SDK,微信小程序实现使用腾讯地图SDK步骤详细介绍,微信小程序接入腾讯地图(线路规划、逆解析)、高德地图,微信小程序之使用腾讯地图,微信小程序 接入第三方地图,小程序服务器配置地图,微信小程序接入腾讯地图,微信小程序插入腾讯地图教程,微信小程序如何调用腾讯地图,如何在微信小程序中接入腾讯地图,微信小程序腾讯地图SDK使用方法,在微信小程序上创建一个简单的腾讯地图,微信小 阅读详情

前言:网上一直没有找到用Swift开发IOS的好的教程,所以找了官网的文档翻译一下算了。如有错误欢迎指正。博主首发优快云,mcf171专栏。

博客链接:mcf171的博客

原文链接:Connect the UI to Code

——————————————————————————————

在上一个小节中我们完成了一个里程碑。上面就是iOS app 设计中的面向动作的设计模式。面向动作的设计也就是当某一个特等事件发生的时候一个对象像另外一个对象发送消息。在我们这个案例中,事件是用户点击了Set Default Label Text 按钮,动作是setDefaultLabelText,目标是ViewController(因为在类中定义了方法),这个发送人是Set Defaut Label Text按钮。消息是我们在代码中定义的动作方法。因此目标是能接受消息的对象,同时也能执行动作。能发送动作消息的对象比如说按钮是可以出发事件从而响应用户的交互比如说点击、拖拽。这种模式在iOS app程序开发中是相当常见的,在剩下的课程中我们能看到更多的例子。

处理用户输入

在这个时候我们可以修改标签的值了,现在呢我们的目标是增加一个行为来设置标签的值为我们在文本框输入的值。为了简单化,我们定义用户在文本框按下回车键的时候则表明标签应该要更新了。

(下述这段楼主没太懂)

当我们从文本框接受用户输入的时候,我们需要从文本框的代理获取一些帮助。代理是一个对象行为的代表,也可以和其他对象进行协同。在我们这个例子中这个文本框的代理对象有这对其他对象的引用。在合适的时候这个代理对象将发送消息给另一个代理。这个消息将告诉代理,代理对象正要处理或者刚刚处理完。


当文本被编辑时,一个文本框代理和文本框进行交流。并且当重要的事件发生时代理也能了解,比如说什么时候一个用户开始编辑或者停止编辑文本。这个代理使用这个消息在合适的时候来保存或者清理数据,忽略键盘等等。


只要一个对象遵循了合适的接口,这个对象就可以作为其他对象的代理。UITextFieldDelegate定义了了文本框的代理接口。在这个案例中,因为ViewController拥有对于文本框的引用,所以我们可以让ViewController作为文本框的代理。


首先我们需要让ViewController采用UITextFieldDelegate接口。只需要在类声明后面加上这个接口即可。

采用UITextFieldDelegate接口

1、如果助手编辑器是打开的,通过点击标准编辑器按钮来返回标准编辑器界面。同时可以点击导航纽克和实用工具区纽扣进行展开


2、在工程导航中,选取ViewController.swift。

3、在ViewController.swift中找到class所在的行。应该看起来是这样的

class ViewController: UIViewController {

4、在UIViewController后加一个逗号和UITextFieldDelegate来采用这个接口

class ViewController: UIViewController, UITextFieldDelegate {

通过采用了这个接口,那么ViewController类就可以将自己定义为UITextFieldDelegate。也就意味着我们可以将ViewController设置为文本框的代理并通过实现一系列的行为来处理文本框的用户输入。

设置ViewController作为nameTextField的代理

1、在ViewController.swift找到viewDidLoad()方法

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

这个模板的实现方法包括了一个注释。我们不需要这个注释所以可以直接删掉或者不管。

2、在super.viewDidLoad()方法下增加一个空行和下面的语句

// Handle the text field’s user input through delegate callbacks.
nameTextField.delegate = self

self 指的就是ViewController类。

现在你的viewDidLoad()方法应该看起来是这样的()

override func viewDidLoad() {
    super.viewDidLoad()
    
    // Handle the text field’s user input through delegate callbacks.
    nameTextField.delegate = self
}

ViewController现在代理了nameTextField。

UITextFieldDelegate接口包含了optional方法,也就是没必要一定实现他们,但是对于一些我们想实现的一些行为,我们必须要实现其中的两个方法。

func textFieldShouldReturn(textField: UITextField) -> Bool
func textFieldDidEndEditing(textField: UITextField)

为了理解这些方法什么时候调用,并且做了什么。因此非常重要的理解文本框如何对于用户事件进行响应。当用户点击文本框的时候,会制动称为第一响应者。在一个app中,第一响应者是一个第一个接受各种各样app时间的对象,包括关键事件、手势事件和动作消息。换句话来说,许多用户产生的事件都自动转给第一响应者。


当一个文本框称为第一响应者的时候,iOS会显示一个键盘并且开始编辑会话。用户在键盘中输入的都会插入到文本框中。


当一个用户想完成文本框的编辑时,文本框需要移除自己是第一响应者的状态。因为文本框不在是app上激活的对象,事件需要转发到更合适的对象上。


这个时候就要说到我们需要实现的UITextFieldDelegate方法。我们需要指定当用户点击按钮来结束文本框的编辑时,文本框需要移除自己是第一响应者的状态。我们通过textFieldShouldReturn()方法来做这个事情。

实现textFieldShouldReturn方法

1、在ViewController.swift在// MARK: Actions上添加下述

// MARK: UITextFieldDelegate


这个注释是用来组织代码和帮助你通过这个注释进行导航


我们已经增加了一些注视了,Xcode列表会将这些注释作为源代码文件中函数菜单的一个小节,当你点击编辑区域顶部的文件名的时候就可以看到。这个函数功能可以快速的帮助你快速的跳跃到相应的代码块。注意这个小节的命名规则是//MARK: 你可以通过点击其中的一个小节标题来跳跃到相应的小节。


2、在注释下添加以下方法

func textFieldShouldReturn(textField: UITextField) -> Bool {
}

3、在这个方法中添加下述代码来移除文本框的第一响应者状态兵增加一个描述信息。

// Hide the keyboard.
textField.resignFirstResponder()

当我们手动输入这两行代码的时候,我们会发现Xcode的代码提示功能是一个非常好的功能。当Xcode显示一系列可能完成的提示,我们可以滚动列表直到找到想要的从而按下回车。Xcode就会插入整行代码。

4、在方法的最后添加下述代码

return true
因为这个方法必须返回一个Boolean类型的值,所以返回true表明当用户按下回车键之后,文本框应该忽视键盘输入。


第二个需要实现的方法是textFieldDIdEndEditing,这个方法会在文本框移除了第一响应者状态之后被调用。也就是在textFieldShouldReturn方法之后被调用。


textFieldDidEditing方法给了我们机会来获取输入文本框的消息,然后进行处理。在我们的例子中,我们需要获取文本框的值然后用这个值来修改标签。

实现UITextFieldDelegate接口的textFieldDidEndEditing方法

1、在ViewController.swift文件中的textFieldShouldReturn方法后添加下述方法

func textFieldDidEndEditing(textField: UITextField) {
}

2、在这个方法中添加以下代码

mealNameLabel.text = textField.text

最终 textFieldDidEndEditing应该是以下形式

func textFieldDidEndEditing(textField: UITextField) {
    mealNameLabel.text = textField.text
}

里程碑:运行模拟器,我们选择文本框并且敲入一些文字。当我们点击键盘的Done按钮时,键盘会消失,标签文字会变为文本框的文字,当我们点击Set Default Label Text按钮时,标签会变为Default Text。





ps:这节课完整的实例工程为:Download File


FFTW3库在Windows中的安装和使用 Windows 32位平台下载:FFTW Installation on Windows。 阅读详情

相关推荐

手把手教你学Simulink--单相逆变器模糊逻辑控制策略仿真

本文介绍了在Simulink中设计单相逆变器模糊逻辑控制策略的完整流程。主要包括:1)构建单相逆变器模型;2)使用FuzzyLogicToolbox设计模糊控制器,定义输入输出变量和模糊规则;3)将控制器集成到Simulink模型;4)添加干扰源和示波器;5)配置仿真参数并分析结果。该方法利用模糊控制处理非线性系统的优势,可实现输出电压的精确跟踪,具有良好的鲁棒性。文中提供了详细的步骤说明和示例代码,强调准确设计隶属函数和规则库对控制性能的关键作用。该仿真设计为电力电子控制系统的开发提供了有效支持。

MHD0815的博客 200

iOS第三方登录集成实战:基于AppAuth统一OAuth 2.0授权流程

OAuth 2.0是现代应用实现安全授权的核心协议,它通过授权码流程将用户认证与资源访问分离,有效保护用户凭证。其核心原理在于客户端通过授权服务器获取访问令牌,而非直接处理用户密码,从而提升系统安全性。这一标准化协议的技术价值在于为应用提供了安全、可控的第三方资源访问能力,广泛应用于社交登录、API集成等场景。在iOS开发中,集成Google、Facebook等第三方登录常面临SDK差异大、流程复杂等挑战。AppAuth作为专注于OAuth 2.0和OpenID Connect的开源框架,通过提供统一的AP

weixin_34258838的博客 406

点云数据处理:体素滤波算法

体素滤波是一种简单而有效的点云数据处理方法,可用于去除离群点和平滑点云表面。体素滤波是一种常用的点云数据处理算法,用于去除离群点并平滑点云表面。在本文中,我们将介绍CloudCompare和PCL(Point Cloud Library)中的体素滤波算法,并提供相应的源代码示例。PCL是一个专门用于点云处理的开源库,提供了一系列高效的点云处理算法和工具。然后,我们创建了一个。方法执行体素滤波,并将滤波后的点云保存为"filtered_cloud.ply"文件。方法来执行体素滤波,指定体素大小为0.01。

ZyqfCss的博客 388

IOS Apps 开发(Swift)(4)——Connect the UI to Code(1)

前言:网上一直没有找到用Swift开发IOS的好的教程,所以找了官网的文档翻译一下算了。如有错误欢迎指正。 原文链接:Connect the UI to Code —————————————————————————————— 在本次课程中,我们将把基础的FoodTracker app的UI和代码联系起来,并且我们也可以定义一些用户在UI上的操作行为。当最终完成的时候你的app应该效果如下

mcf171的专栏 977

DICOM标准:DICOM医学影像中的覆盖层(Overlay)概念详解

DICOM标准:深入详解DICOM医学影像中的覆盖层(Overlay)

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 1562

9 硬件工程师笔面试高频知识考点真题解析——运算放大器

运算放大器(运放)摘要 运放是一种高增益、差分输入的模拟集成电路,具有虚短(线性区输入电压相等)和虚断(输入电流为零)特性,支持负反馈(线性放大)和开环/正反馈(饱和区比较)两种工作模式。关键特性包括高输入阻抗、低输出阻抗,理想运放参数(如无限增益)与实际参数(如有限带宽)的差异。 选型要点: 信号特性:直流/低频信号关注失调电压(Vos)、温漂;高频信号侧重带宽(GBW)和压摆率(SR)。 电源条件:单/双电源供电、电压范围及功耗需求(如电池设备需低静态电流)。 精度与噪声:微弱信号需低噪声运放,高精度场

XU157303764的博客 1675

futter开发错误积累

本文汇总了Flutter开发中常见的错误及解决方案,主要涉及: 三方库依赖冲突问题(如win32库版本冲突) Impeller渲染引擎导致的iOS问题(可通过关闭FLTEnableImpeller解决) Java与Gradle版本不兼容问题 组件构建时序问题(使用addPostFrameCallback解决) 列表滚动性能优化(开启resamplingEnabled) 输入框相关异常处理(字数统计、居中显示等) 其他常见错误:数组越界、类型转换、滑动冲突、资源压缩等。针对每个问题提供了具体解决方案,涉及版本

haoxuhong的博客 8519

【即插即用模块】Transformer篇 | MICCAI 2025 | ReLULA:Q/K双ReLU线性注意力,既轻又准!

本文介绍了一种基于线性注意力的多实例学习模块(Lin-MIL),适用于高分辨率视觉任务。该模块通过转置计算顺序和使用ReLU激活,将计算复杂度从O(n²d)降至O(nd²),同时提升特征判别性。核心创新包括Q/K双ReLU激活、可学习温度系数和数值稳定归一化。实验表明,该模块在轻量化视觉任务中优于传统线性注意力和Mamba架构。代码实现了模块化矩阵乘法,支持即插即用替换ViT自注意力层。该模块特别适合计算病理学等需要处理大量图像补丁的任务。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 140

IOS Apps 开发(Swift)(3)——Build a Basic UI(1)

前言:网上一直没有找到用Swift开发IOS的好的教程,所以找了官网的文档翻译一下算了。如有错误欢迎指正。 原文链接:Build a Basic UI —————————————————————————————— 在这个课程中,我们将熟悉Xcode,这个工具是用来写apps的,同时我们也会熟悉在Xcode中的程序架构,通过这次课程,我们将开始制作一个FoodTrackerapp的简单的用户接

mcf171的专栏 1218

基于潜在空间分数匹配的混合型表格数据合成方法

然而,在我们的模型中,β 预计会更小,因为我们不需要嵌入的分布精确地遵循标准高斯分布,因为我们还有一个额外的扩散模型。受 Transformer 在表格数据分类/回归任务中取得成功的启发,我们首先为每一列学习一个独特的标记器,然后将标记(列)级表示输入到 Transformer 中,以捕捉列之间错综复杂的关系。在第 4 节中,我们证明了通过这种设计,TABSYN 可以在不到 20 次函数评估(NFE)的情况下生成高质量的合成表格数据,这比其他基于扩散的表格数据合成方法要少得多。是标记器的可学习参数。

步子哥的博客 853

Trae的付费之路还挺艰难,茫茫多的人想付付不了(附解决办法)

不得不说,Trae国际版这个付费其实整的挺复杂的,但没办法,毕竟有政策限制,付费成功后,你就是尊贵的Pro用户啦,使用Claude 4不排队还是挺爽的,而且600次其实不算少了,有一个小技巧,简单的问题就把模型切到Gemini-2.5-flag,因为使用这个模型是没有次数限制的。其次付费的时候有个ZIP Code,这东西也是个迷之存在,有的地区节点需要填,有的不需要,如果你选到了不需要填的节点,那很好,付费就行了,如果需要填,可以填一个51800试试。

cpp加油站的专栏 5879

iOS Apps 开发(Swift)(11)——Persist Data

前言:网上一直没有找到用Swift开发IOS的好的教程,所以找了官网的文档翻译一下算了。如有错误欢迎指正。博主首发优快云,mcf171专栏。 博客链接:mcf171的博客 原文链接:Implement Edit and Delete Behavior —————————————————————————————— 在本次课程中,我们将关注如何通过我们的FoodTracker app 来

mcf171的专栏 1080

实战复盘:纷玩岛(Livelab)候补订单微信支付协议的逆向与复现

通过本次对纷玩岛候补支付接口的分析,我们实现了一个脱离 App UI 的轻量级支付发起器。这不仅验证了其API的设计逻辑(Standby -> PrePayInfo 分层设计),也为后续的自动化监控或辅助抢票工具提供了支付环节的技术验证。技术本无罪,关键在于如何使用。理解这些底层协议,有助于我们写出更健壮的代码,也能在遇到线上支付问题时快速定位是业务层(API)问题还是通道层(微信)问题。

猫敷雪 800

IOS Apps 开发(Swift)(5)——Work with View Controllers

前言:网上一直没有找到用Swift开发IOS的好的教程,所以找了官网的文档翻译一下算了。如有错误欢迎指正。 原文链接:Work with View Controllers —————————————————————————————— 在本次课程中,我们还是在对FoodTracker app的菜品场景的UI进行处理。我们会重新安排存在的UI元素并且添加一个图片选择器来给UI添加图片。当完成的时

mcf171的专栏 971

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IOS Apps 开发(Swift)(3)——Build a Basic UI(2)

前言:网上一直没有找到用Swift开发IOS的好的教程,所以找了官网的文档翻译一下算了。如有错误欢迎指正。 原文链接:Build a Basic UI —————————————————————————————— 上一篇文章写到了对于模板创建的两个重要文件的描述。 打开你的Storyboard 为了我们的app我们准备通过storyboard开始工作了。storyboard是一个

mcf171的专栏 899

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

iOS Apps 开发(Swift)(9)——Implement Navigation

前言:网上一直没有找到用Swift开发IOS的好的教程,所以找了官网的文档翻译一下算了。如有错误欢迎指正。 原文链接:Implement Navigation —————————————————————————————— 在本次课程中,我们将使用导航控制器并且创建FoodTracker app的导航控制流,在课程的最后我们将有一个完整的当行模式和交互流。当我们最终完成app之后,界面如图所示

mcf171的专栏 827

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IOS Apps 开发(Swift)(8)——Create a Table View

前言:网上一直没有找到用Swift开发IOS的好的教程,所以找了官网的文档翻译一下算了。如有错误欢迎指正。 原文链接:Create a Table View —————————————————————————————— 在本次课程中,我们将创建FoodTracker app的主屏幕。我们将创建第二个基于 table view 的场景,从而显示用户的菜品 学习目标 在本次课

mcf171的专栏 792

IOS Apps 开发(Swift)(6)——Implement a Custom Control(2)

前言:网上一直没有找到用Swift开发IOS的好的教程,所以找了官网的文档翻译一下算了。如有错误欢迎指正。 原文链接:Implement a Custom Control —————————————————————————————— 在上一节文章中我们已经将资源添加到了我们的项目工程中,在这一节我们将让按钮显示这些图片 给按钮设置星星图片 1、打开RatingControl.swif

mcf171的专栏 790

IOS Apps 开发(Swift)(6)——Implement a Custom Control(1)

前言:网上一直没有找到用Swift开发IOS的好的教程,所以找了官网的文档翻译一下算了。如有错误欢迎指正。 原文链接:Implement a Custom Control —————————————————————————————— 在本次课程中,我们将让FoodTracker app支持打分的功能。最终完成的图如下: 学习目标 在本次课程中,你可以了解到: 创

mcf171的专栏 741

iOS Apps 开发(Swift)(10)——Implement Edit and Delete Behavior

前言:网上一直没有找到用Swift开发IOS的好的教程,所以找了官网的文档翻译一下算了。如有错误欢迎指正。博主首发优快云,mcf171专栏。 博客链接:mcf171的博客 原文链接:Implement Edit and Delete Behavior —————————————————————————————— 在本次课程中,在本次课程中我们将允许用户进行编辑和删除菜品 学习目

mcf171的专栏 741

IOS Apps 开发(Swift)(7)——Define Your Data Model

前言:网上一直没有找到用Swift开发IOS的好的教程,所以找了官网的文档翻译一下算了。如有错误欢迎指正。 原文链接:Define Your Data Model —————————————————————————————— 在本次课程中,我们将定义和测试 FoodTracker 的数据模型。一个数据模型是用来展现anpp的信息结构。 学习目标 在本次课程中,你可以了解到:

mcf171的专栏 636

IOS Apps 开发(Swift)(1)——Jump Right In

前言:网上一直没有找到用Swift开发IOS的好的教程,所以找了官网的文档翻译一下算了。如有错误欢迎指正。 原文链接:Jump Right In “Start Developing iOS Apps (Swift) ”对于开发一个在iPhone和iPad上运行的app来说是一个非常完美的入门教程。通过学习这一系列有深入浅的课程,最终可以构建你自己的第一个App——包括工具介绍,主要概念和一些非

mcf171的专栏 543

IOS Apps 开发(Swift)(2)——Learn the Essentials of Swift(1)

前言:网上一直没有找到用Swift开发IOS的好的教程,所以找了官网的文档翻译一下算了。如有错误欢迎指正。 原文链接:Learn the Essentials of Swift —————————————————————————————— 第一节课是通过Swift playground进行展现,playground允许我们修改code并且直接在Xcode上马上看到结果。Playgroun

mcf171的专栏 503

IOS Apps 开发(Swift)(2)——Learn the Essentials of Swift(2)

前言:网上一直没有找到用Swift开发IOS的好的教程,所以找了官网的文档翻译一下算了。如有错误欢迎指正。 原文链接:Learn the Essentials of Swift —————————————————————————————— 上一篇文章讲的是Swift里面的控制语句接下来说的是函数和方法 函数和方法 函数是一个可重复使用的具有名分的一块代码,能在程序的多个地

mcf171的专栏 470

iOS 多语言本地化教程,VS Code KXApp 编辑 String Catalog .xcstrings

做 iOS 多语言本地化总要在 VS Code 和 Xcode 之间来回切?这篇讲用 KXApp(快蝎)在 VS Code 里直接编辑 String Catalog(.xcstrings):双击打开和 Xcode 一样的表格,`.xcstrings` 与老的 `.strings`、`.stringsdict` 同表编辑,加语言同步登记到工程、从源码扫描同步新 key,复数、设备变体和变量占位都在表里处理,改源语言文本后已有翻译自动标需复核。文件仍是标准格式,回 Xcode 打开一致。

2501_91592143的博客 171

安卓IOS打包证书

.p12 、 .mobileprovision 、 keystore 相关证书申请

weixin_58431406的博客 285
上一篇: IOS Apps 开发(Swift)(4)——Connect the UI to Code(1)
下一篇: IOS Apps 开发(Swift)(5)——Work with View Controllers
K_W
K_W
博客等级 码龄14年 8粉丝 283原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值