作者:IOSCREATER,原文鏈接,原文日期:2016/02/08
譯者:EyreFree;校對(duì):DianQK;定稿:CMB
為多個(gè)對(duì)象創(chuàng)建多個(gè) Outlet 是比較費(fèi)時(shí)費(fèi)力的一件事情。而且多個(gè)對(duì)象也可能共享同一個(gè)的 Outlet。在本教程中,我們將會(huì)根據(jù)按鈕的 tag 值來(lái)創(chuàng)建多個(gè) Outlet。本教程使用 Xcode 7.2 作為開(kāi)發(fā)工具,使用 Swift 2.1 和 iOS 9 進(jìn)行構(gòu)建。
打開(kāi) Xcode 并新建一個(gè) Single View Application。Product Name 項(xiàng)填寫(xiě) IOS9MultipleOutletsTutorial,然后填寫(xiě)你的 Organization Name 和 Organization Identifier。Language 項(xiàng)選擇 Swift,并且確保 Devices 項(xiàng)只選擇了 iPhone。
打開(kāi) StoryBoard 并從 Object Library 拖一個(gè)按鈕到主視圖的左上方。打開(kāi) Attribute Inspector(屬性檢查器)并將 View 的 Tag 設(shè)為 10。
復(fù)制此按鈕,并將該按鈕放置于和第一個(gè)按鈕相同一行的主視圖右上角位置,該按鈕和第一個(gè)按鈕具有相同的 Tag。
接下來(lái),從 Object Library 中拖出另一個(gè)按鈕到主視圖中,將該按鈕放在左上角按鈕的下面。選中這個(gè)按鈕并且打開(kāi) Attribute Inspector,將 View 中的 Tag 設(shè)為 20。然后再次復(fù)制剛添加的這個(gè)按鈕并將復(fù)制的按鈕放在剛添加的按鈕的右方。到這里 Storyboard 應(yīng)該是如下圖所示的樣子:
選中主視圖然后點(diǎn)擊 Interface Builder 右下角的 Resolve Auto Layout Issues 按鈕。選擇 All Views 中的 Reset to Suggested Constraint 這一選項(xiàng)。
打開(kāi)文件 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 屬性可以用于遍歷主視圖的子視圖。每個(gè)按鈕都根據(jù) tag 值的不同添加了一個(gè)相應(yīng)的 target。接下來(lái),我們需要實(shí)現(xiàn) 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()
}
當(dāng)選中按鈕時(shí),按鈕的顏色會(huì)隨之改變。構(gòu)建并運(yùn)行項(xiàng)目,接下來(lái)我們就點(diǎn)擊按鈕來(lái)更改這些按鈕的顏色了。
你可以從 ioscreator 的 GitHub 下載 IOS9MultipleOutletsTutorial 的源碼。
本文由 SwiftGG 翻譯組翻譯,已經(jīng)獲得作者翻譯授權(quán),最新文章請(qǐng)?jiān)L問(wèn) http://swift.gg。