所有 我是IOS的新开发人员。现在我用书来学习斯威夫特。 有一些麻烦。我使用swift3,但这本书由swift2组成。 所以我不知道什么是错误的代码。 你可以帮帮我吗? 谢谢你的阅读和帮助。
这是datacode。
import UIKit
class ViewController: UIViewController {
let timeSelector: Selector = #selector(ViewController.updateTime)
let interval = 1.0
var count = 0
@IBOutlet weak var IbICurrentTime: UILabel!
@IBOutlet weak var IbIPickTime: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
Timer.scheduledTimer(withTimeInterval: interval, repeats: true, block: timeSelector)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func changeDatePicker(_ sender: UIDatePicker) {
let datePickerView = sender
let formatter = DateFormatter()
formatter.dateFormat = "YYYY-MM-dd HH:mm:ss EEE"
IbIPickTime.text = "선택시간: " + formatter.string(from: datePickerView.date)
}
func updateTime() {
IbICurrentTime.text = String(count)
count = count+1
}
}
有问题
Timer.scheduledTimer(withTimeInterval: interval, repeats: true, block: timeSelector)
}
我不知道我必须在“阻止”输入什么内容?
答案 0 :(得分:2)
“Block”是Swift关闭的Objective-C术语。 “Blocks”变体的工作原理如下:
Timer.scheduledTimer(timeInterval: interval, repeats: true, block: { timer in
self.IbICurrentTime.text = String(self.count)
self.count += 1
})
您不需要使用块语法定义单独的updateTime()
函数。
在Swift中,上面的内容可以更自然地写成
Timer.scheduledTimer(timeInterval: interval, repeats: true) { _ in
self.IbICurrentTime.text = String(self.count)
self.count += 1
}
如果您想使用选择器,use scheduledTimer(timeInterval:target:selector:userInfo:repeats:)
instead:
Timer.scheduledTimer(timeInterval: interval,
target: self,
selector: #selector(updateTime),
userInfo: nil,
repeats: true)