从零开始swift-秒表

后期所有代码会上传到github
直接上效果图

从零开始swift-秒表_第1张图片

学到基本知识点总结:
0)可选和!拆包链接 最重要的

Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化。如果在使用变量之前不进行初始化就会报错:
Optional其实是个enum,里面有None和Some两种类型。其实所谓的nil就是Optional.None, 非nil就是Optional.Some, 然后会通过Some(T)包装(wrap)原始值,这也是为什么在使用Optional的时候要拆包(从enum里取出来原始值)的原因, 也是PlayGround会把Optional值显示为类似{Some "hello world"}的原因,这里是enum Optional的定义:
一旦声明为Optional的,如果不显式的赋值就会有个默认值nil。判断一个Optional的值是否有值,可以用if来判断:
if strValue {//do sth with strValue}
对于这种类型的值,我们可以直接这么声明:var myLabel: UILabel!, 果然是高(hao)大(gui)上(yi)的语法!, 这种是特殊的Optional,称为Implicitly Unwrapped Optionals, 直译就是隐式拆包的Optional,就等于说你每次对这种类型的值操作时,都会自动在操作前补上一个!进行拆包,然后在执行后面的操作,当然如果该值是nil,也一样会报错crash掉。

varmyLabel:UILabel!//!相当于下面这种写法的语法糖varmyLabel:ImplicitlyUnwrappedOptional
那么!大概也有两种使用场景
1.强制对Optional值进行拆包(unwrap)
2.声明Implicitly Unwrapped Optionals值,一般用于类中的属性

1)定时器的使用
2)storyboard 的使用和OC 一模一样
3)控件的基本使用

最后附上代码:


import UIKit
class ViewController: UIViewController {
var Counter = 0.0
var timer = NSTimer()
var isPlaying = false
override func viewDidLoad() {
super.viewDidLoad()
timeLable.text = String(Counter)
// Do any additional setup after loading the view, typically from a nib.
}
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
@IBAction func playBtnClicked(sender: UIButton) {
if(isPlaying){
return
}
timer = NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector:Selector("updateTimer") , userInfo: nil, repeats: true)
isPlaying = true;
playBtn.enabled = false
stopBtn.enabled = true
}
func updateTimer() {
Counter += 0.2
timeLable.text = String(Counter)
}
@IBAction func stopBtnClicked(sender: AnyObject) {
playBtn.enabled = true
stopBtn.enabled = false
timer.invalidate()
isPlaying = false
}
@IBAction func resetBtnClicked(sender: AnyObject) {
Counter = 0.0;
playBtn.enabled = true
stopBtn.enabled = true
isPlaying = false
timeLable.text = String(Counter)
timer.invalidate()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBOutlet weak var timeLable: UILabel!
@IBOutlet weak var stopBtn: UIButton!
@IBOutlet weak var playBtn: UIButton!
}

你可能感兴趣的:(从零开始swift-秒表)