项目档案

第一个UIKit示例项目

在SwiftUI出现之前,构建iOS赢博体育程序的主要工具是UIKit。这些笔记中的示例将引导您完成构建一个简单的UIKit演示赢博体育程序的过程。

开始

启动Xcode并选择创建新项目的选项。像往常一样选择app作为项目类型,然后在新项目对话框中进行以下选择。

这里最重要的选项是Interface选项。在本课程中,我们使用了SwiftUI选项。对于今天的例子,我们将切换到Storyboard风格的用户界面构造。

当你的新项目打开时,你会看到Xcode已经用ViewController类和一个名为“Main”的故事板文件设置了你的项目。最初,您的项目只有一个视图。UIKit项目中的每个视图都有一个视图控制器类以及你可以在故事板中编辑的视图的图形表示。

在故事板中设置用户界面

单击项目文件列表中的Main以调出故事板编辑器。你的屏幕看起来像这样:

故事板编辑器出现在窗口的中央。在故事板编辑器的左侧,您将看到用户界面中组件的层次视图。在屏幕的正中央,您将看到图形化的故事板视图。在右侧,您将看到一个检查窗格,您可以在其中查看和编辑故事板中显示的对象的各种属性。

我们要对故事板做的第一件事是在第一个视图中放置一些简单的用户界面元素。要向视图中添加新元素,请单击故事板编辑器右上角的+号,以调出可用用户界面元素的目录。

向下滚动左侧的列表,找到Text Field组件,然后将该Text Field组件拖到故事板中,并将其放置在视图中。接下来,使用相同的过程将按钮拖到视图中。

一旦在视图中放置了一些元素,就可以单击它们来选择它们。一旦你选择了一个项目,它的属性就会显示在检查器中。

检查器顶部有一系列选项卡,允许您访问检查器中的不同窗格。

我目前选择的选项卡是属性检查器的选项卡。这是用户界面元素最常用的属性设置。在后面的注释中,我们将使用其他一些可用的选项卡。

在视图中选中按钮后,找到按钮的Title属性并将其文本更改为“Greet Me!”。

带约束的定位元素

接下来,我们将使用约束系统来控制文本字段和按钮在屏幕中的位置。让我们从文本字段开始。单击文本字段以选择它。在故事板屏幕的右下角,您将看到一组图标,您可以单击这些图标来访问各种约束设置工具。

中间的图标是“Add New Constraints”图标。单击该图标将弹出一个对话框,您可以在其中设置文本字段的约束。

在上面、左边和右边的约束框中键入值40,然后单击“Add 3 constraints”按钮,将这些约束添加到文本字段中。这会将文本字段的上边缘定位在距离视图顶部40像素的地方,并将其左右两侧定位在距离视图左右边缘40像素的地方。

接下来,选择按钮。单击“Add New Constraints”图标左侧的Align按钮,并选择在视图中水平居中按钮的选项。最后,点击“Add New Constraints”图标,添加一个60的顶部约束,使按钮位于文本框底部60像素处。

最后,再次单击文本字段以选择它,并在检查器中找到占位符属性。将占位符文本设置为“输入您的姓名”。

添加出口

故事板编辑器允许我们为视图设置用户界面。在幕后,我们还将有一个视图控制器类,我们可以在其中为视图编写代码。单击项目文件视图中的ViewController文件,调出我们视图的视图控制器代码。

因为我们想要访问用户在文本字段中键入的文本,所以我们需要设置一个变量,我们可以使用它来访问文本字段。在UIKit中,这是通过为我们的用户界面元素设置出口来完成的。

设置出口需要两个步骤。首先,我们在视图控制器中设置一个成员变量。然后,我们将期望的组件链接到故事板中的变量。

首先添加一个新的成员变量

@IBOutlet var nameText: UITextField!

然后,切换回故事板视图,单击文本字段,然后单击检查器视图中最右边的选项卡,以切换到Connections检查器。

在故事板视图的顶部,您将看到一行三个图标。

最左边的图标代表你的视图控制器。为了将文本框连接到视图控制器的输出变量我们将从连接检查器中拖一条线到视图控制器图标。找到连接检查器中标题为“引用Outlets”的部分。在该部分中有一个标题为“新引用出口”的条目。在入口的右边,你会看到一个圆圈。单击该圆圈内并从圆圈拖动到视图上方栏中的视图控制器图标。当你松开鼠标时,你会看到一个选项菜单。从选项列表中选择nameText变量。现在,您已经将文本字段连接到视图控制器中的输出变量。

准备航行

我们的第一个示例赢博体育程序将有两个视图,一个初始视图,用户可以在其中输入自己的姓名,另一个视图,用户可以在其中查看自定义的问候语。由于我们将有两个视图,我们将需要一个导航控制器来启用它们之间的导航。

为赢博体育程序设置导航的第一步是将赢博体育程序的初始视图放置在导航控制器中。要做到这一点,点击view在storyboard中选择它,然后从Xcode的Editor菜单中选择“Embed in /Navigation Controller”命令。

创建第二个视图

要为我们的赢博体育程序创建第二个视图,首先单击故事板中的+按钮来调出目录。找到目录中的“视图控制器”条目,并将一个新的视图控制器拖到故事板中第一个视图的右侧。

在这个新视图的中心放置一个标签。

接下来,右键单击项目视图中的项目文件夹,并选择向项目添加一个新的空文件的选项。将你的文件命名为GreetingController.swift。

将以下代码粘贴到新文件中:

导入UIKit类GreetingController: UIViewController {@IBOutlet var greetingLabel: UILabel!var name:字符串?}

最后,我们需要将这个控制器类链接到你在故事板中创建的新视图。回到storyboard,点击视图控制器新视图上方的图标。然后,在属性检查器中单击Identity检查器选项卡。在检查器的自定义类部分,你会看到一个类属性。下拉菜单,从可用的控制器类列表中选择GreetingController类。您的控制器类现在链接到新视图。

一旦我们为第二个视图设置了视图控制器,你就可以将视图中的标签附加到控制器类中的outlet变量上。为此,单击故事板中的标签,单击侧边面板中的Connections检查器,然后从新的引用出口部分拖动一条线到第二个视图中的视图控制器图标。

设置segue

当用户在第一个视图中点击“Greet Me!”按钮时,我们的赢博体育程序将导航到第二个视图以显示自定义问候。为了实现这一点,我们将设置按钮来触发到第二个视图的segue。要进行segue,按住键盘上的control键并从按钮拖动到第二个视图。将出现一个菜单,其中包含segue的几个选项:选择Show选项。一旦segue设置好,就会出现一个箭头将第一个视图链接到第二个视图。

接下来,点击segue箭头在检查器中将其调出。单击Attributes检查器的图标。为segue到Greeting设置Identifier属性。

如果你现在运行你的赢博体育,你会看到点击第一个视图中的按钮会把你带到第二个视图。

将数据从一个视图传递到另一个视图

我们希望赢博体育程序具有的最后一个功能是在第二个视图中向用户显示自定义问候的能力。为了实现这一点,我们需要获取他们在第一个视图中输入的名称,将其传递给第二个视图,然后允许第二个视图构造一个以名称欢迎用户的问候语。

让这个工作的第一步是在第一个视图控制器中放一个特殊的方法它会在那个视图发生segue时被调用。

将以下代码放入第一个视图控制器类中:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {switch segue。标识符{case "Greeting":让controller = segue.destination as!GreetingController . controller.name = nameText。text default: preconditionFailure("Unexpected segue identifier")}}

这段代码寻找标识符为“Greeting”的segue。对于那个segue,我们会获取一个对目标控制器的引用,并将文本字段中的一些文本复制到目标控制器的name属性中。这样,第二个视图就可以访问用户名。

最后,将这段代码放入第二个控制器:

重载func viewDidLoad() {super.viewDidLoad()如果让name = name {greetingLabel。text = “Hello, \(name). ”欢迎来到UIKit!”}}

此代码构造自定义问候语并将其放入标签中。

您的第一个示例赢博体育程序现在已经完成。您可以在模拟器中运行它,以验证一切都按预期工作。