swift学习第一天

相关资料

马上着手开发 iOS 应用程序 (Start Developing iOS Apps Today)

苹果开发中文站 cocoachina

swift 开发官方网站

iOS Developer Library

The Swift Programming Language中文完整版

检查器面板

视图控制器

构建了基本的视图层次后,下一步就需要控制可视元素并响应用户输入。在 iOS 应用程序中,您可以使用视图控制器 (UIViewController)
来管理内容视图及其分视图层次。

视图控制器并不是视图层次的一部分,也不是界面中的元素。相反,它管理着层次中的视图对象,并为它们提供行为。在串联图中构建的每个内容视图层次,都需要一个对应的视图控制器来管理界面元素,并执行任务来响应用户的交互操作。通常,这意味着您需要为每个内容视图层次编写一个自定 UIViewController 子类。如果应用程序有多个内容视图,那么就需要为每个内容视图使用不同的自定视图控制器类。

视图控制器扮演着多种角色。它们负责协调应用程序的数据模型与显示该数据的视图之间的信息传输,管理应用程序的内容视图的生命周期,并处理设备旋转时方向的更改。但其最主要的作用可能是响应用户输入。

您还可以使用视图控制器来转换各种类型的内容。由于 iOS 应用程序显示内容的空间很有限,因此视图控制器提供了所需要的基础结构,可让您移除一个视图控制器的视图,替换为另一个视图控制器中的视图。

通过让视图控制器文件与串联图中的视图进行通信,可以定义应用程序中的交互方式。方法是通过 Action 与 Outlet 来定义串联图与源代码文件之间的连接

操作 (Action)

操作 是一段代码,它与应用程序中可能会发生的某类事件相链接。该事件发生后,代码就会执行。您可以定义操作来完成任何事情:从操控数据到更新用户界面。操作可驱动应用程序的流程来响应用户事件或者系统事件。

可采用如下方法来定义:使用 IBAction 返回类型和 sender 参数来创建并实现方法。

  1. -

    (IBAction)restoreDefaults:(id)sender;

sender 参数指向负责触发操作的对象。IBAction 返回类型是个特殊的关键词。它与 void 关键词类似,但它表示该方法是一种操作,您可以在 Interface
Builder 的串联图中连接到这种操作(这就是这个关键词有 IB 前缀的原因)。在“教程:串联图”中,您会了解如何将 IBAction 操作链接到串联图中元素的更多知识。

Outlet

Outlet 可让您从源代码文件引用界面中的对象(添加到串联图的对象)。您可以按住 Control 键,并将串联图中的特定对象拖移至视图控制器文件来创建 Outlet。这就为视图控制器文件中的对象创建了属性,通过该属性,您可以在运行时通过代码来访问并操控该对象。例如,在第二个教程中,您将为
ToDoList 应用程序中的文本栏创建 Outlet,这样就可以用代码的形式访问文本栏的内容。

Outlet 被定义为 IBOutlet 属性。

  1. @property

    (weak,

    nonatomic)

    IBOutlet
    UITextField
    *textField;

IBOutlet 关键词告诉 Xcode,您可以从 Interface Builder 连接到该属性。在“教程:串联图”中,您会了解有关如何从串联图将
Outlet 连接到源代码的更多知识。

控制 (Control)

控制是用户界面对象(例如按钮、滑块或者开关),用户可以操控它们来与内容进行交互、提供输入、在应用程序内导航,以及执行所定义的其他操作。代码可通过控制来接收用户界面的消息。

用户与控制进行交互,会创建控制事件。控制事件表示用户可在控制上使用的各种手势,例如将手指抬离控制、手指拖移到控制上,以及在文本栏中按下。

常见的事件类型有三种:

  • 触碰和拖移事件。用户通过触碰或者拖移与控制交互时,发生的就是触碰和拖移事件。触碰事件分几个阶段。例如,当用户初次用手指触碰按钮,就会触发 Touch Down Inside 事件;如果用户手指拖离按钮,则会触发相应的拖移事件。当用户的手指抬离按钮但仍停留按钮边缘的范围内,就会发送
    Touch Up Inside。如果用户在抬起手指前,手指已经拖离了按钮(实际上是取消了触碰),就会触发 Touch Up Outside 事件。
  • 编辑事件。用户编辑文本栏,发生的是编辑事件。
  • 值更改事件。用户对控制进行操控,从而导致控制产生一系列不同的值,发生的是值更改事件。

定义交互时,您应该了解与应用程序中每个控制相关联的操作,然后明确地向用户展示应用程序中控制的作用。

导航控制器

如果应用程序有多个内容视图层次,就需要能够在它们之间进行切换。为此,可以使用专门的视图控制器:导航控制器 (UINavigationController)。导航控制器管理在一系列视图控制器中向后和向前切换的操作,例如用户在
iOS 版“邮件”应用程序的电子邮件帐户、收件箱邮件和单封电子邮件之间导航。

我们将由特定导航控制器所管理的一组视图控制器称为其导航栈。导航栈是一组后进先出的自定视图控制器对象。添加到堆栈的第一个项目将变成根视图控制器,永不会从堆栈中弹出。而其他视图控制器可被压入或弹出导航栈。

虽然导航控制器的最主要作用是管理内容视图控制器的显示方式,但它还负责显示自己的自定视图。具体来说,它会显示导航栏(位于屏幕顶部的视图,提供有关用户在导航层次中位置的上下文)。导航栏包含一个返回按钮和其他可以自定的按钮。添加到导航栈的每个视图控制器都会显示这个导航栏。您需要配置导航栏。

一般而言,您不必执行任何操作来将视图控制器弹出导航栈;导航控制器提供的返回按钮会实现该操作。但您需要手动将视图控制器压入堆栈中。可使用串联图来操作。

Debug

时间: 2024-10-24 23:22:46

swift学习第一天的相关文章

Swift学习第一天之数组

Swift学习第一天: 1:数组的使用 数组的定义: let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 2:数组的遍历 for num in numbers { print(num) } 3:也是通过下标来制定内容 let num1 = numbers[0] let num2 = numbers[1] 4.定义可变不可变 `let` 定义不可变数组 `var` 定义可变数组 5.向可变数组里面追加内容 array1.append("wangwu"

Swift学习第一练——用Swift实现的FlappyBird小游戏

用Swift实现的FlappyBird小游戏 伴随着apple公司对swift的推广态度深入,swift火的很快,并且swift精简便捷的语法和强大的功能,对于使用Object-C开发iOS的开发者来说,也有必要了解学习一下swift.这篇博客跳过swift干涩的语法,直接从一个小游戏项目开始使用swift,将其中收获总结如下: FlappyBird是前段时间很火的一款小游戏,通过手指点击屏幕平衡小鸟通过障碍.我是将以前OC版的项目拿来改成了swift,所以整体的思路还是OC的开发思路. 首先,

swift学习第一天:认识swift以及swift的常量和变量

一:认识swift // 1.导入框架 //#import <UIKit/UIKit.h> import UIKit // 2.定义一个标识符 // int a = 10; // swift中定义标识符:必须制定该标识符是一个常量还是一个变量 // var(变量)/let(常量) 标识符的名称 : 标识符的类型 = 初始化值 var a : Int = 10; let b : Double = 3.14; a = 29; // b = 3.11 错误写法 // 3.语句结束后可以不跟; //

Swift学习第一天值字典

1:字典的定义: * `let` 不可变字典 * `var` 可变字典 2:`[String : NSObject]` 是最常用的字典类型 3:赋值直接使用 `dict[key] = value` 格式 * 如果 key 不存在,会设置新值 * 如果 key 存在,会覆盖现有值 4:字典的合并:直接添加key 和Value即可 //: 合并字典 var dict1 = [String: NSObject]() dict1["nickname"] = "大老虎" di

swift学习第一天---常量变量基础数据类型

1 import Foundation 2 3 /** 4 * 1.常量 变量 5 知识要点:常量的定义用let 变量的定义用var 6 常量一旦定义便不可再更改. 7 变量定义之后可以在定义之后的程序中任意地方进行修改. 8 */ 9 // 常量的定义 10 let constants1:Int = 10 11 12 print("constants1 = \(constants1)") 13 14 // 变量的定义 15 var variables1:Int = 11 16 17

Swift学习——Swift基础详解(八)

Assertions    断言 可选可以让你判断值是否存在,你可以在代码中优雅地处理值缺失的情况.然而,在某些情况下,如果值缺失或者值并不满足特定的条件,你的代码可能并不需要继续执行.这时,你可以在你的代码中触发一个断言(assertion)来结束代码运行并通过调试来找到值缺失的原因. Debugging with Assertions    使用断言进行调试 断言会在运行时判断一个逻辑条件是否为true.从字面意思来说,断言"断言"一个条件是否为真.你可以使用断言来保证在运行其他代

Swift 学习-多线程

1:第一种多线程 func fun1(){ for i in 200...300{ NSLog("%d",i); } } func fun2(){ for i in 300...400{ NSLog("%d",i); } } var th1 = NSThread(target:self,selector:"fun1",object:nil); th1.start(); //开启线程 NSThread.detachNewThreadSelector

SWIFT学习笔记05

1.Swift 无需写break,所以不会发生这种贯穿(fallthrough)的情况.2.//用不到变量名,可用"_"替换 for _ in 1...power { answer *= base } 3.case 可以匹配更多的类型模式,包括区间匹配(range matching),元组(tuple)和特定类型的描述. 可以这样用case case 1...3: naturalCount = "a few" 4.如果存在多个匹配,那么只会执行第一个被匹配到的 ca

汇集了很多swift 学习指南

https://github.com/ipader/SwiftGuide 1,059   Unstar7,294 Fork1,966 ipader/SwiftGuide CodeIssues 0Pull requests 0WikiPulseGraphs 这份指南汇集了Swift语言主流学习资源,并以开发者的视角整理编排.http://dev.swiftguide.cn 376 commits 3 branches 0 releases 12 contributors Swift 100.0%