【问题标题】:Segue programmatically does not work in viewDidLoadSegue 以编程方式在 viewDidLoad 中不起作用
【发布时间】:2016-11-03 22:06:40
【问题描述】:

我一直在尝试通过以下方式以编程方式执行 segue:

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var btnRedirect: UIButton!

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

        self.performSegueWithIdentifier("segueToSecond", sender: btnRedirect)
    }

    @IBAction func redirect(sender: AnyObject) {
         self.performSegueWithIdentifier("segueToSecond", sender: self)
    }
}

问题是 segue 通过单击按钮来执行它可以完美地工作,尽管当我尝试以编程方式执行它时,正如您在 viewDidLoad 方法中看到的那样,它不起作用!

我已经尝试将sender 传递为nil

【问题讨论】:

  • 您不能在viewDidLoad 中执行segue,如果您想在屏幕出现视图时立即执行,请在viewDidAppear 中执行此操作
  • 我们明白了,您的问题是关于 Swift 的。不需要全部大写。
  • 代码已更新。让我知道你在做什么......

标签: ios iphone swift segue


【解决方案1】:

作为 dan'S 的评论,您不能在 ViewDidLoad 中执行 segue 在 vi​​ewDidAppears 中执行。?

注意:将执行 segue 从您的 ViewDidLoad 移动到 viewDidAppers 或 在您的按钮 Action 中,如下代码,并确保您将故事板中的 segue 标识符设置为“segueToSecond”。未经测试的代码。所以,请告诉我。如果您在执行时遇到任何问题。

更新:

注意:如果您希望 segue 在视图加载后自动执行。您应该将 segue 从 VC 连接到 VC。

      @IBAction func redirect(sender: AnyObject) {
     segueToSecondVC()
}


      func segueToSecondVC() {
      self.performSegue(withIdentifier: "segueToSecond", sender: self)
  }

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

       if (segue.identifier == "segueToSecond") {

       let dest = segue.destination as! viewTwo // viewTwo is your destination ViewController
       print("Segue Performed")

   }

  }

更新:

注意:如果您希望 segue 在视图加载后自动执行,您可以从下面的代码中为您的 segue 设置一些延迟。

     let delayInSeconds = 4.0
     override func viewDidLoad() {
     super.viewDidLoad()

     DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delayInSeconds) {

    segueToSecondVC()

  }

  }

希望这可以帮助您解决问题....

【讨论】:

  • 本例中无需实现prepare for segue方法。
  • 他想以编程方式进行配对。请看我答案底部的注释。
猜你喜欢
  • 1970-01-01
  • 2015-08-31
  • 1970-01-01
  • 2018-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-03
  • 2012-03-29
相关资源
最近更新 更多