Passing Values to UIViewController in new Storyboard - Swift

11,224

You are creating a new instance of NewViewController with this line

let newViewController:NewViewController = NewViewController()

Instead assign variables and delegate to vc which you have instantiated from StoryBoard

var storyboard : UIStoryboard = UIStoryboard(name: StoryboardName, bundle: nil)
// It is instance of  `NewViewController` from storyboard 
var vc : NewViewController = storyboard.instantiateViewControllerWithIdentifier(NewViewController) as NewViewController

// Pass delegate and variable to vc which is NewViewController
vc.createAccountDelegate = self
vc.teststring = "hello"
vc.transitioningDelegate = self
vc.modalTransitionStyle = UIModalTransitionStyle.CoverVertical
self.presentViewController(vc, animated: true, completion: nil)
Share:
11,224
Ryan
Author by

Ryan

Updated on July 24, 2022

Comments

  • Ryan
    Ryan almost 2 years

    I am trying to pass values to a new view controller - located within a new storyboard file. However when I do so, the result I get from the NewViewController is always nil.

    Below is how I show the view controller within the new storyboard:

    // Show create account page with custom transition
    var storyboard : UIStoryboard = UIStoryboard(name: StoryboardName, bundle: nil)
    var vc : UIViewController = storyboard.instantiateViewControllerWithIdentifier(NewViewController) as UIViewController
    

    I try to send the information here:

    // Pass the delegate to the first view controller
    let newViewController:NewViewController = NewViewController()
    newViewController.createAccountDelegate = self
    newViewController.teststring = "hello"
    

    And then present the view controller.

    vc.transitioningDelegate = self
    vc.modalTransitionStyle = UIModalTransitionStyle.CoverVertical
    self.presentViewController(vc, animated: true, completion: nil)
    

    Here is my NewViewController, where I try to receive the values. However end up still being nil.

    import UIKit
    
    class NewViewController: UIViewController {
        var createAccountDelegate:AccountCreationDelegate!
        var teststring:NSString!
    
        override func viewDidLoad() {
            super.viewDidLoad()
        }
    

    Am I sending the values incorrectly?

  • Ali
    Ali almost 8 years
    why this is happening though it was working before and now very strange behaviour