作者:IOSCREATER,原文链接,原文日期:2016/02/08
译者:EyreFree;校对:DianQK;定稿:CMB

为多个对象创建多个 Outlet 是比较费时费力的一件事情。而且多个对象也可能共享同一个的 Outlet。在本教程中,我们将会根据按钮的 tag 值来创建多个 Outlet。本教程使用 Xcode 7.2 作为开发工具,使用 Swift 2.1 和 iOS 9 进行构建。

打开 Xcode 并新建一个 Single View Application。Product Name 项填写 IOS9MultipleOutletsTutorial,然后填写你的 Organization Name 和 Organization Identifier。Language 项选择 Swift,并且确保 Devices 项只选择了 iPhone。

打开 StoryBoard 并从 Object Library 拖一个按钮到主视图的左上方。打开 Attribute Inspector(属性检查器)并将 View 的 Tag 设为 10。

复制此按钮,并将该按钮放置于和第一个按钮相同一行的主视图右上角位置,该按钮和第一个按钮具有相同的 Tag。
接下来,从 Object Library 中拖出另一个按钮到主视图中,将该按钮放在左上角按钮的下面。选中这个按钮并且打开 Attribute Inspector,将 View 中的 Tag 设为 20。然后再次复制刚添加的这个按钮并将复制的按钮放在刚添加的按钮的右方。到这里 Storyboard 应该是如下图所示的样子:

选中主视图然后点击 Interface Builder 右下角的 Resolve Auto Layout Issues 按钮。选择 All Views 中的 Reset to Suggested Constraint 这一选项。

打开文件 ViewController.swift 并将方法 viewDidLoad 改为如下代码块所示:

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

for subview in view.subviews where subview.tag == 10 {
let button = subview as! UIButton
button.addTarget(self, action: "changeColorRed:", forControlEvents: .TouchUpInside)
}

for subview in view.subviews where subview.tag == 20 {
let button = subview as! UIButton
button.addTarget(self, action: "changeColorGreen:", forControlEvents: .TouchUpInside)
}
}

这里的 subview 属性可以用于遍历主视图的子视图。每个按钮都根据 tag 值的不同添加了一个相应的 target。接下来,我们需要实现 target 方法:

func changeColorRed(sender: AnyObject) {
let button: UIButton = sender as! UIButton
button.tintColor = UIColor.redColor()
}

func changeColorGreen(sender: AnyObject) {
let button: UIButton = sender as! UIButton
button.tintColor = UIColor.greenColor()
}

当选中按钮时,按钮的颜色会随之改变。构建并运行项目,接下来我们就点击按钮来更改这些按钮的颜色了。

你可以从 ioscreator 的 GitHub 下载 IOS9MultipleOutletsTutorial 的源码。

本文由 SwiftGG 翻译组翻译,已经获得作者翻译授权,最新文章请访问 http://swift.gg

文章目录