Swift的新手 - 我试图在预定义的时间过后实现简单的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")
}
}
Picture也会显示我的整个代码,包括错误。注意:这不是我自己的代码。我只是按照以下链接回答了问题:
答案 0 :(得分:1)
您已将第一个参数声明为a = {}
with open("file.txt") as f:
for line in f:
k,v = line.split(' ') #spacebar in file
a[k.strip()] = v.strip()
,但它应该是timerInterval
。
所以改变:
timeInterval
要:
var time = Timer.scheduledTimer(timerInterval: 8.0, target: self, selecter: #selector(changeview), userInfo: nil, repeats: false
答案 1 :(得分:1)
InputView
是Swift 3类型,但从其余的方法签名判断,您似乎使用的是Swift 2.在Swift 2中使用Timer
。
另外,为了将来参考,除了NSTimer
拼写错误(您现在已经修复),第三个参数是timeInterval
,而不是selector
。
所以,在Swift 2中:
selecter
或者在Swift 3中:
NSTimer.scheduledTimerWithTimeInterval(8.0, target: self, selector: #selector(changeview), userInfo: nil, repeats: false)
答案 2 :(得分:0)
还要注意,在Swift 4中,必须在计时器到期后将@objc添加到要调用的选择器中,因为调用该选择器的代码显然仍是用Objective-C编写的。
所以改变:
func changeview()
对此:
@objc func changeview()