NSTimer Swift难度

时间:2015-04-22 00:16:45

标签: swift nstimer

我正在尝试创建一个NSTimer,以便我可以向下移动UIImageView NSTImer遇到了困难,先说这个。

var timer = NSTimer.scheduledTimerWithTimeInterval(0.5, target:self(), selector: Selector ("mrockdown"), userInfo: nil, repeats: true)

在调用中缺少参数#1的参数。但是,当我从target:self()中删除括号时,它会告诉我

  

无法调用' scheduledTimerWIthTimerInterval'使用类型'的参数列表(Double,target:ViewController - >() - > ViewController,selector:Selector,userinfo:nil,重复Bool。

我该怎么办?

2 个答案:

答案 0 :(得分:1)

问题与 你说的有关。看起来你试图将此作为财产声明的一部分来说:

class ViewController {
    var timer = ...
    // ...
}

但你无法做到这一点,因为就存储的财产而言,没有self。您需要将计时器声明为Optional,然后稍后对其进行初始化:

class ViewController {
    var timer = NSTimer!
    func someMethod {
        timer = ...
    }
}

然后你将删除括号(它们是错的),一切都会编译得很好。

答案 1 :(得分:0)

您可以在要触发计时器的功能中执行此操作(例如viewDidLoad或某些IBAction

 _ = Timer.scheduledTimer(timeInterval: yourInterval, target: self, selector: #selector(yourFunction), userInfo: nil, repeats: true)

话虽这么说,要为视图设置动画,你应该使用它:

UIView.animate(withDuration: yourDuration) {
    // set yourView's final position here
}