新的斯威夫特这里-我正试图实现一个简单的segue操作后,预定义的时间失效。但出于某种原因,我的Xcode没有识别Timer,并给出了错误"Timer模块没有名为scheduledTimer的成员“。我哪儿都找不到帮助。
代码:
import UIKit
class ViewController: UIViewController {
let emptystring = String()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
var time = Timer.scheduledTimer(timeInterval: 8.0, target: self, selector: #selector(changeview), userInfo: nil, repeats: false)
}
func changeview (){
self.performSegueWithIdentifier("GoToMain", sender: self)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "GoToMain"){
let destination = (segue.destinationViewController as! UINavigationController).viewControllers[0] as! SecondView
destination.emptyString = emptystring
}
print("Segue Performed")
}
}图片还显示了我的整个代码,包括错误。注意:这不是我自己的代码。我只在下面的链接中跟踪问题的答案:
发布于 2017-06-12 23:23:08
Timer是Swift 3类型,但从其他方法签名来看,您似乎使用了Swift 2。在Swift 2中使用NSTimer。
另外,作为将来的参考,除了timeInterval类型(您现在已经修复了)之外,第三个参数是selector,而不是selecter。
所以,在Swift 2中:
NSTimer.scheduledTimerWithTimeInterval(8.0, target: self, selector: #selector(changeview), userInfo: nil, repeats: false)或者在Swift 3:
Timer.scheduledTimer(timeInterval: 8.0, target: self, selector: #selector(changeview), userInfo: nil, repeats: false)发布于 2017-06-12 20:17:15
您已经将第一个参数声明为timerInterval,但它应该是timeInterval。
因此,改变:
var time = Timer.scheduledTimer(timerInterval: 8.0, target: self, selecter: #selector(changeview), userInfo: nil, repeats: false至:
var time = Timer.scheduledTimer(timeInterval: 8.0, target: self, selector: #selector(changeview), userInfo: nil, repeats: false)发布于 2019-05-08 18:20:29
还请注意,使用Swift 4,您必须在计时器过期后调用的选择器中添加@objc,因为调用此选择器的代码显然仍然是在Objective中编写的。
因此,改变:
func changeview()对此:
@objc func changeview()https://stackoverflow.com/questions/44507930
复制相似问题