【问题标题】:How do I perform an auto-segue in Xcode 6 using Swift?如何使用 Swift 在 Xcode 6 中执行自动转场?
【发布时间】:2026-01-14 20:50:01
【问题描述】:

我希望在应用加载一段时间后从主视图控制器自动切换到第二个视图控制器。

我该怎么做?

我需要以编程方式进行吗?

【问题讨论】:

    标签: swift ios8 xcode6 segue


    【解决方案1】:

    你可以使用这个sn-p的代码:

    let delay = 1 // Seconds
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(delay * NSEC_PER_SEC)), dispatch_get_main_queue()) {
        self.launchMainUI()
        return
    }
    

    delay 秒后执行launchMainUI 方法。将其替换为您自己的实现,在其中实例化您的视图控制器并呈现它,或者只是调用一个 segue。

    【讨论】:

      【解决方案2】:

      如果您的 UI 布局在 Storyboard 中,您可以在第一个 ViewControllerviewDidLoad 中设置一个 NSTimer,然后在计时器触发时调用 performSegueWIthIdentifier

      class ViewController: UIViewController {
      
          override func viewDidLoad() {
              super.viewDidLoad()
              // Do any additional setup after loading the view, typically from a nib.
              let timer = Timer.scheduledTimer(interval: 8.0, target: self, selector: #selector(timeToMoveOn), userInfo: nil, repeats: false)
          }
      
          @objc func timeToMoveOn() {
              self.performSegue(withIdentifier: "goToMainUI", sender: self)
          }
      

      这是在情节提要中设置转场的方法:

      1. 控制从第一个ViewController 的文件所有者图标拖动到第二个ViewController
      2. 从弹出窗口中选择“模态”。


      1. 单击出现在视图控制器之间的segue 箭头。在 Attributes Inspector 中为 segue...
      2. 给你的 segue 一个标识符。
      3. 如果您不想看到屏幕滑入,请关闭 动画

      【讨论】:

        【解决方案3】:

        在你的行动中你必须像这个例子那样写

        self.performSegueWithIdentifier("segue 名称", sender: self)

        在你必须实现这个方法之后

        override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
        {        
                if(segue.identifier == "name of segue")
                {
                    var view : yourviewcontroller = segue.destinationViewController as yourviewcontroller
                }
        
        }
        

        【讨论】:

          【解决方案4】:

          斯威夫特 4:

          let timer = Timer.scheduledTimer(timeInterval: 8.0, target: self, selector: #selector(segueToSignIn), userInfo: nil, repeats: false)
          
          @objc func segueToSignIn() {
              self.performSegue(withIdentifier: "SignInSegue", sender: self)
          }
          

          【讨论】: