user3323303 user3323303 - 2 years ago 177
Swift Question

Presenting a view controller programmatically in swift

Hi I am trying to convert the following objective C code into swift to navigate from one view controller to another view controller when a button is clicked. any help would be much appreciated

This is taken from apple's programming guide

- (void)add:(id)sender {
// Create the root view controller for the navigation controller
// The new view controller configures a Cancel and Done button for the
// navigation bar.
RecipeAddViewController *addController = [[RecipeAddViewController alloc]

// Configure the RecipeAddViewController. In this case, it reports any
// changes to a custom delegate object.
addController.delegate = self;

// Create the navigation controller and present it.
UINavigationController *navigationController = [[UINavigationController alloc]
[self presentViewController:navigationController animated:YES completion: nil];

my code is indicated below, but not sure how to implement in the navigation controller, in the storyboard my mainSectionViewController is embedded with a Navigation Controller

func sectionBtnClicked (sender: UIButton!) {

let sectionController = self.storyboard?.instantiateViewControllerWithIdentifier("mainSectionsVC") as mainSectionViewController

let navController = UINavigationcontroler. ///not sure what actually comes here, any help would be appreciated

self.presentViewController(navController, animated: true, completion: nil)


Answer Source

Do you want to present navController modally?

if yes, this is the answer

self.presentViewController(navController, animated: true, completion: nil)

"self" is current view controller that will present the navController

And put it like this,

class ViewController: UIViewController {       

    override func viewDidLoad() {

        var theButton = UIButton()

        // Add the event to button
        theButton.addTarget(self, action: "buttonTouchInside:", forControlEvents: .TouchUpInside)


    func buttonTouchInside(sender:UIButton!)
        // When the button is touched, we're going to present the view controller

        // 1. Wrap your view controller within the navigation controller

        let navController = UINavigationController(rootViewController: yourViewController)

        // 2. Present the navigation controller

        self.presentViewController(navController, animated: true, completion: nil)



If you want to navigate between viewController not navigationController as your question, you can use

self.navigationController.pushViewController(viewControllerToPush, animated: true)
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download