How to use modal views in swift?

14,660

Try this :)

@IBAction func addCard(sender: AnyObject) {
        self.modalTransitionStyle = UIModalTransitionStyle.coverVertical 
        // Cover Vertical is necessary for CurrentContext 
        self.modalPresentationStyle = .currentContext 
        // Display on top of    current UIView
        self.present(secondViewController(), animated: true, completion: nil)
}
Share:
14,660
rocket101
Author by

rocket101

Updated on June 04, 2022

Comments

  • rocket101
    rocket101 almost 2 years

    When adding an account to Mail (in preferences), you get a modal view, like this: Example Image, source: kb.xcentric.com/images/ipad12.jpg

    My question is, how do I replicate this programatically? In other words, how do I display a modal UIView over a presenting view?

    Here's what I have:

    import UIKit
    
    
    class ViewController: UIViewController {
    
    
    
    @IBAction func addCard(sender: AnyObject) {
        var addContact : secondViewController = secondViewController()
        self.modalTransitionStyle = UIModalTransitionStyle.FlipHorizontal 
        self.modalPresentationStyle = .CurrentContext // Display on top of current UIView
        self.presentViewController(addContact, animated: true, completion: nil)
    }
    //Code goes on to do other unrelated things
    

    Also, I've done the following:

    1. Created the View Controller in Interface builder.
    2. Connected the BarButtonItem "add contact" to the viewcontroller, by control-clicking, dragging to the viewcontroller of the view I want to display, and selecting "modal" in the drop down.
    3. Set the Class and StoryBoard UI of the presented Viewcontroller to secondViewController.

    The expected behavior is that, when the UIBarButton "Add Contact" (which successfully triggers @IBAction func addCard(sender: AnyObject) in the code above) is pressed, secondViewController is presented as a modal view above the main view.

    When I run the code above, I get the error "Use of undeclared type secondViewController"

    What am I doing wrong?

    NOTE: This is a re-ask of an earlier question in which I asked a similar, but slightly different question. I checked on meta, and I think it is OK - I don't want to invalidate the answers on the original question, as this is asking something slightly different. Also, in case it helps, I found some similar questions - in obj C. How do I do that in swift?