我想通过swift在IOS上创建datePicker

时间:2017-04-02 08:26:38

标签: ios swift datepicker

所有 我是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)
    }

我不知道我必须在“阻止”输入什么内容?

1 个答案:

答案 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 scheduled​Timer(time​Interval:​target:​selector:​user​Info:​repeats:​) instead

Timer.scheduledTimer(time​Interval: interval,
                     target: self,
                     selector: #selector(updateTime),
                     userInfo: nil,
                     repeats: true)