首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xcode不识别Timer()- Swift 3

Xcode不识别Timer()- Swift 3
EN

Stack Overflow用户
提问于 2017-06-12 20:10:32
回答 3查看 417关注 0票数 0

新的斯威夫特这里-我正试图实现一个简单的segue操作后,预定义的时间失效。但出于某种原因,我的Xcode没有识别Timer,并给出了错误"Timer模块没有名为scheduledTimer的成员“。我哪儿都找不到帮助。

代码:

代码语言:javascript
复制
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")
    }

}

图片还显示了我的整个代码,包括错误。注意:这不是我自己的代码。我只在下面的链接中跟踪问题的答案:

Xcode Swift 3:计时器和分段视图控制器错误

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-12 23:23:08

Timer是Swift 3类型,但从其他方法签名来看,您似乎使用了Swift 2。在Swift 2中使用NSTimer

另外,作为将来的参考,除了timeInterval类型(您现在已经修复了)之外,第三个参数是selector,而不是selecter

所以,在Swift 2中:

代码语言:javascript
复制
NSTimer.scheduledTimerWithTimeInterval(8.0, target: self, selector: #selector(changeview), userInfo: nil, repeats: false)

或者在Swift 3:

代码语言:javascript
复制
Timer.scheduledTimer(timeInterval: 8.0, target: self, selector: #selector(changeview), userInfo: nil, repeats: false)
票数 1
EN

Stack Overflow用户

发布于 2017-06-12 20:17:15

您已经将第一个参数声明为timerInterval,但它应该是timeInterval

因此,改变:

代码语言:javascript
复制
var time = Timer.scheduledTimer(timerInterval: 8.0, target: self, selecter: #selector(changeview), userInfo: nil, repeats: false

至:

代码语言:javascript
复制
var time = Timer.scheduledTimer(timeInterval: 8.0, target: self, selector: #selector(changeview), userInfo: nil, repeats: false)
票数 1
EN

Stack Overflow用户

发布于 2019-05-08 18:20:29

还请注意,使用Swift 4,您必须在计时器过期后调用的选择器中添加@objc,因为调用此选择器的代码显然仍然是在Objective中编写的。

因此,改变:

代码语言:javascript
复制
func changeview()

对此:

代码语言:javascript
复制
@objc func changeview()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44507930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档