01. showAlert()函数中追加判断,根据差值确定等级,并提示给用户。
02. 局部变量 local variables 和 实例变量instance variables。
- local variables 仅存在于它所定义的方法中。每次方法被调用,它的成员变量和常量都被重新生成。
- instance variables 与它所在的对象同生共死。一般定义在每个文件的最上面。
- 上述两种变量最好在命名的时候就加以区分。
03. 将更新label和开始新一轮的处理,修改执行位置
- 修改前:弹出pop 就立即执行,更新lable
- 修改后:在弹出pop,并按下pop的OK按钮后,再执行
# 修改前
let action = UIAlertAction(title: "OK", style: .Default, handler: nil)
# 修改后
let action = UIAlertAction(title: "OK",style: .Default,
handler: { action in
self.startNewRound()
self.updateLabel()
})
上述代码块叫做closure,闭包,可以看做是一种没有名称的方法,这段代码并不立即执行,只有在OK的这个action执行完后才执行。在这段代码块后面的代码继续执行,比如后面的pop显示等。
为什么要在闭包中加入self?
This is a rule in Swift. If you forget self in a closure, Xcode doesn’t want to build your app (try it out). This rule exists because closures can “capture” variables, which comes with surprising side effects. You’ll learn more about that in the other tutorials.
04. 添加startOver的处理
startOver函数,用来重启游戏,比如换一个人玩的时候,需要将前一个人的分数和轮数重置。
func startover(){
score = 0
roundNumValue = 0
startNewRound()
updateLabel()
}
添加上述函数,然后在添加startOver与一个action方法的连接,在action方法中调用上述函数。
05. 添加about
- 添加cocoa Touch class文件,设置父类为UIViewController。
- 选择Main.storyboard,添加一个view controller,并在AttributeInspector中将Orientation设置为Landscape横屏。
- 添加button和textview控件。
- 添加主界面中i 按钮和 aboutviewController之间的联系。按住Ctrl拖动到about窗口,选择modal完成一个界面的迁移(segues)。
- segues也是有属性的,选择segues的Attribute Inspector,将Transition设置为FlipHorizontal,设置界面迁移时的动画。
- 设置新添加的viewcontroller的类为 AboutViewController。
- 为AboutViewController的close按钮添加方法。
@IBAction func close(sender: UIButton) {
dismissViewControllerAnimated(true, completion: nil)
}
TODO
- Xcode上各个操作按钮的意义。