NSTimer Swift 难度
NSTimer Swift difficulty
我正在尝试创建一个 NSTimer,以便我可以将 UIImageView 向下移动,但是
NSTImer有困难,先说这个。
var timer = NSTimer.scheduledTimerWithTimeInterval(0.5, target:self(), selector: Selector ("mrockdown"), userInfo: nil, repeats: true)
调用中参数 #1 缺少参数。但是当我从 target:self()
中删除括号时,它告诉我
Cannot invoke 'scheduledTimerWIthTimerInterval' with an argument list of type '(Double, target: ViewController -> () -> ViewController, selector: Selector, userinfo: nil, repeates Bool.
我该怎么办?
问题与 你说的有关。看起来您正试图将此作为 属性 声明的一部分:
class ViewController {
var timer = ...
// ...
}
但是你不能那样做,因为就存储的 属性 而言,没有 self
。您需要将计时器声明为 Optional,然后再对其进行初始化:
class ViewController {
var timer = NSTimer!
func someMethod {
timer = ...
}
}
然后你将删除括号(它们是错误的)并且一切都会编译得很好。
您可以在要触发计时器的函数内执行此操作(即 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
}
我正在尝试创建一个 NSTimer,以便我可以将 UIImageView 向下移动,但是 NSTImer有困难,先说这个。
var timer = NSTimer.scheduledTimerWithTimeInterval(0.5, target:self(), selector: Selector ("mrockdown"), userInfo: nil, repeats: true)
调用中参数 #1 缺少参数。但是当我从 target:self()
中删除括号时,它告诉我
Cannot invoke 'scheduledTimerWIthTimerInterval' with an argument list of type '(Double, target: ViewController -> () -> ViewController, selector: Selector, userinfo: nil, repeates Bool.
我该怎么办?
问题与 你说的有关。看起来您正试图将此作为 属性 声明的一部分:
class ViewController {
var timer = ...
// ...
}
但是你不能那样做,因为就存储的 属性 而言,没有 self
。您需要将计时器声明为 Optional,然后再对其进行初始化:
class ViewController {
var timer = NSTimer!
func someMethod {
timer = ...
}
}
然后你将删除括号(它们是错误的)并且一切都会编译得很好。
您可以在要触发计时器的函数内执行此操作(即 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
}