import UIKit
class ViewController: UIViewController {
var flipcount = 0{
didSet{
FlipCount.text = "FlipCount:\(flipcount)"
}//属性观察器
}
@IBOutlet weak var FlipCount: UILabel!
@IBOutlet var cardButton: [UIButton]!
var emojiChoice = ["?","?","☎️","?"]//数组
@IBAction func TouchCard(_ sender: UIButton) {
flipcount += 1
if let cardNum = cardButton.index(of: sender){
Flipcard(WithEmoji: emojiChoice[cardNum], on: sender)
}else{
print("Chosen Card is not in CardButton.")
}//option,如何处理option,变量与常量,button,uilebal//如何关联outlet outlet collection,uilebal
}
func Flipcard(WithEmoji emoji:String,on button:UIButton) {
if button.currentTitle == emoji{
button.setTitle("", for:UIControlState.normal)
button.backgroundColor=#colorLiteral(red: 1, green: 0.5763723254, blue: 0, alpha: 1)
}
else{
button.setTitle(emoji,for:UIControlState.normal)
button.backgroundColor=#colorLiteral(red: 0.9999960065, green: 1, blue: 1, alpha: 1)
}//external name,internal name,option键,修改变量cmd,color
}
}
复制代码
上面为第一课总的程序,实现的结果就是,有四张按钮做的卡片,点击卡片,卡片进行反转。 设置了一个单一的页面的程序,将我们的程序都放在了class ViewController中,
class ViewController: UIViewController {
}
复制代码
页面中放置的元素有四张button卡片,还有一个label的计数器
定义了一个变量来设置翻转的次数,并用到一个知识,属性观察器didSet,属性观察器的意思就是每当我们设置的flipcount变量变化的时候,对应的将FlipCount.text进行更新。
var flipcount = 0{
didSet{
FlipCount.text = "FlipCount:\(flipcount)"
}//属性观察器
}
复制代码
这边定义两个控件,一个是FlipCount,一个是cardButton,一个是UILabel,一个是UIButton,直接将storyBoard中的文件按住cmd拖拽到ViewController.swift中并将两个都设置为outlet,并定义了一个数组,数组中放置的是emoji的表情。
@IBOutlet weak var FlipCount: UILabel!
@IBOutlet var cardButton: [UIButton]!
var emojiChoice = ["?","?","☎️","?"]//数组
复制代码
下面的程序定义了一个函数TouchCard这个函数用来定义点击卡片后悔发生什么。点击卡片后flipcount会自增1,这里还有个注意点是option类型,如果所按得卡片是cardButton中的,那么就翻转卡片,如果不是,那么久打印出Chosen Card is not in CardButton.
@IBAction func TouchCard(_ sender: UIButton) {
flipcount += 1
if let cardNum = cardButton.index(of: sender){
Flipcard(WithEmoji: emojiChoice[cardNum], on: sender)
}else{
print("Chosen Card is not in CardButton.")
}//option,如何处理option,变量与常量,button,uilebal//如何关联outlet outlet collection,uilebal
}
复制代码
下面的是Flipcard函数,这个函数的意思就是如果button.currentTitle是emoji这里的emoji是调用的时候传入的参数emojiChoice[cardNum],那么设置为空,并将背景颜色改变,否则就将title设置为emoji,并改变背景颜色。这里有几个知识点:
- Flipcard(WithEmoji emoji:String,on button:UIButton) 中的WithEmoji,on是external name,emoji,button是internal name
- 按住option键,可以看到参数函数的返回值,定义,类型等信息。
- 按住cmd键,可以对参数进行定义跳转还有rename等操作
- 输入color可以进行直接的颜色选择,类似于
#colorLiteral(red: 0.9999960065, green: 1, blue: 1, alpha: 1)
func Flipcard(WithEmoji emoji:String,on button:UIButton) {
if button.currentTitle == emoji{
button.setTitle("", for:UIControlState.normal)
button.backgroundColor=#colorLiteral(red: 1, green: 0.5763723254, blue: 0, alpha: 1)
}
else{
button.setTitle(emoji,for:UIControlState.normal)
button.backgroundColor=#colorLiteral(red: 0.9999960065, green: 1, blue: 1, alpha: 1)
}//external name,internal name,option键,修改变量cmd,color
}
复制代码