Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I perform an auto-segue in Xcode 6 using Swift?

I wish to auto-segue from the main viewController to a second view controller after a set period of time after an app loads.

How do I do this?

Do I need to do it programmatically?

like image 839
Fiducial13 Avatar asked Oct 15 '14 09:10

Fiducial13


2 Answers

If your UI is laid out in a Storyboard, you can set an NSTimer in viewDidLoad of your first ViewController and then call performSegueWIthIdentifier when the timer fires:

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)
    }

Here is how you set up the segue in the Storyboard:

  1. Control drag from the File's Owner icon of the first ViewController to the second ViewController.
  2. Choose "modal" from the pop-up.

Seting up the segue


  1. Click on the segue arrow that appears between the view controllers. In the Attributes Inspector for the segue...
  2. Give your segue an Identifier.
  3. Turn off Animates if you don't want to see the screen slide in.

enter image description here

like image 193
vacawama Avatar answered Nov 09 '22 04:11

vacawama


You can use this snippet of code:

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

which performs the launchMainUI method after delay seconds. Replace it with your own implementation, where you instantiate your view controller and present it, or simply invoke a segue.

like image 35
Antonio Avatar answered Nov 09 '22 05:11

Antonio