我正在尝试创建一个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。
我该怎么办?
答案 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
}