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

Posted

技术标签:

【中文标题】Xcode Swift 3:计时器和 Segue 视图控制器错误【英文标题】:Xcode Swift 3: Timer and Segue View Controller Error 【发布时间】:2016-10-30 06:16:33 【问题描述】:

此代码在 ViewController 1 中。goToMainUI 分配给 ViewController 1 和 2 之间的 segue 连接 ID。此外,ViewController 2 的情节提要 ID 相同 (goToMainUI)。定时器完成后,出现错误,ViewControllers 不切换。有谁知道问题是什么?谢谢!

override func viewDidLoad() 
        super.viewDidLoad()

    let timer = Timer.scheduledTimerWithTimeInterval(8.0, target: self, selector: #selector(timeToMoveOn), userInfo: nil, repeats: false)

    func timeToMoveOn() 
        self.performSegue(withIdentifier: "goToMainUI", sender: self)
    

【问题讨论】:

错误说明了什么? 如果您想静音该表达式,请告诉我....我会更新代码... 代码已更新... 【参考方案1】:

试试这个代码:

注意:代码在 Swift 3 中测试。

第 1 步:首先设置故事板 Segue Identifier

第 2 步:

   let emptyString = String() // Do nothing 

   override func viewDidLoad() 
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    Timer.scheduledTimer(timeInterval: 8.0, target: self, selector: #selector(timeToMoveOn), userInfo: nil, repeats: false)

    

    func timeToMoveOn() 
    self.performSegue(withIdentifier: "goToMainUI", sender: self)
   

   override func prepare(for segue: UIStoryboardSegue, sender: Any?) 

    if (segue.identifier == "goToMainUI") 

    let dest = segue.destination as! viewTwo // viewTwo is your destination ViewController
    dest.emptyString = emptyString

        print("Segue Performed")

    


在您的 ViewTwo 中添加上面的 viewDidLoad 方法。

  var emptyString = String()

【讨论】:

感谢这完美的作品!不过有一件事。 segue.destination 为! ViewController 给出一条消息“'ViewController' 类型的表达式未使用”。 (我将 viewTwo 更改为 ViewController,即目标 viewcontroller 的名称)。有可能解决这个问题吗?

以上是关于Xcode Swift 3:计时器和 Segue 视图控制器错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Xcode 8 和 Swift 3.0 中删除覆盖后准备 segue 崩溃

自定义幻灯片 Segue - Xcode 8.0 Swift 3.0

打印可变展开 Segue - Xcode 8.0 Swift 3.0

准备使用数组进行 Segue - Xcode 8.0 Swift 3.0

(Xcode 6 beta / Swift) performSegueWithIdentifier 在 segue 之前有延迟

在两个视图控制器之间展开 Segue 来回 Swift