我们继续开发,这次我们首先要做的是左下角的按钮:start over
如果你准备放弃你所有的分数与局数或者更换游戏玩家,你可以选择重新开始游戏,这就需要我们在代码中添加新的方法:
func startNewGame(){
score = 0
round = 0
startNewRound()
}
这个方法的作用就是讲数据清零。接下来我们需要一个方法,用前文描述过的方法将start over控件与方法绑定.
@IBAction func startOver(){
startNewGame()
updateLabel()
}
在startOver方法中调用开启新游戏与更新数据的方法,注意在编写startover方法是要确保在方法的左边有一个小圆圈,鼠标点击它可以看见空间与代码的关联关系。还有一个需要更改的地方,将初始化viewDidView方法中的startNewRound替换为startNewGame即可。
下面我们要学习一点全新的知识了,我们现在了解一下这个功能的需求,还记得页面右下角那个圆圈的小图标么,它是用来展示一些说明或者帮助信息的,我们点击about图标,会弹出一个全新的页面展示一些关于游戏的说明与信息。
首先我们需要来创建一个全新的文件,点击上方工具栏--File--File...弹出如下窗口:
我们选择Cocoa Touch class,点击next
依次输入名称:aboutViewController
父类:UIViewController
不需要创建XIB文件
语言选择swift
点击下一步,选择保存的路径,点击创建。
可以看见这个swift文件已经出现在左侧的项目导航栏中了,这个一个全新的viewController文件,要设计viewController,我们就要去interfaceBuilder界面。
打开Main.storyboard文件,这里还没有一个新的界面,所以我们还是需要自己添加。
从界面右下角的对象库中,选择ViewController,直接将它拖到界面中
这个viewController完全是空的并且是竖直方向的,选中这个新的viewController,前往属性导航栏,在Simulated Metrics下方, 将Orientation属性致为landspace。
我们在这个新的界面上放上一个button,更能使关闭这个界面。
拖拽一个TextView用于展示一些说明信息,双击它可以修改textview的文本信息(在这里我们还看到一种名为textField的空间,他们的区别是TextField仅仅只可以展示一行的信息),不过这个界面我们是不希望用户可以自己更改的,这需要我们去设置一个它的属性Editable,你可以在这个控件的属性导航栏中找到Behavior,在其中勾选:
现在的界面差不多看起来是这个样子的:
有了这个新的见面,可是怎么从原先的界面跳转到这个新的界面呢?
不要急,这就来了
点击about按钮,按住ctrl,和其他控件绑定一样,将它拖向新的控件(注意选到了button或者textview),要选择整个view,松开鼠标,可以看见对话框,选择modal。
现在你就可以这个出现在你的两个界面之间:
运行一下程序,看看about按钮是否能弹出这个新的界面吧
界面被弹出了,可是好像回不来了。。。接下来我们要添加代码,点击close按钮返回上一个界面。
像我们熟悉的那样,在新的aboutViewController中添加close控件的方法,并与storyboard中的控件绑定,在你像往常一样申明完方法,拖拽鼠标进行控件绑定的时候,你发现what???弹出的界面中竟然没有你刚才写的方法名称?回头检查一下,发现自己并没有做错什么?那么问题出在哪里了?
这个错误的根源就在于界面并不知道我们要将控件与哪一个viewController进行绑定。幸运的是,这一点是非常容易解决的。在storyboard中选中新的界面,在identity 导航栏中,你会看见custom class这一栏,其中有个class选项,设置class为aboutViewController,再试试,我们刚才的动作,ok了
关闭界面的代码(添加在close方法中):
dismissViewControllerAnimated(true, completion: nil)
good,这个入门的app基本已经完成,我们会在接下来的过程继续美化它。