将函数的槽参数传递为 scheduledTimer 的选择器
Passing trough arguments for a function as Selector for a scheduledTimer
所以我在按下按钮时启动了一个预定的计时器(在函数中)
self.timer = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: Selector(ViewController.update), userInfo: nil, repeats: true)
我想在选择器中传递参数数据以进行更新,因为我需要数据,但它仅在函数中可用,但我无法在此函数中声明函数并将其用作#selector .
如此理想:
func update(data: CMMotionActivity) { some code here }
并且在计时器中作为选择器不是 ViewController.update,而是有点像 ViewController.update(data: myAwesomeArray)
您可以使用用户信息
self.timer = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: Selector(ViewController.update(_:)), userInfo: ["data" : youData], repeats: true)
并在您的函数中获取它:
func update(data: Timer) {
let userInfo = timer.userInfo as Dictionary<String, AnyObject>
let data = userInfo["data"]
//use your data
}
所以我在按下按钮时启动了一个预定的计时器(在函数中)
self.timer = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: Selector(ViewController.update), userInfo: nil, repeats: true)
我想在选择器中传递参数数据以进行更新,因为我需要数据,但它仅在函数中可用,但我无法在此函数中声明函数并将其用作#selector .
如此理想:
func update(data: CMMotionActivity) { some code here }
并且在计时器中作为选择器不是 ViewController.update,而是有点像 ViewController.update(data: myAwesomeArray)
您可以使用用户信息
self.timer = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: Selector(ViewController.update(_:)), userInfo: ["data" : youData], repeats: true)
并在您的函数中获取它:
func update(data: Timer) {
let userInfo = timer.userInfo as Dictionary<String, AnyObject>
let data = userInfo["data"]
//use your data
}