Search code examples
iosswiftxcodeswift3uiviewcontroller

How to push and present to UIViewController programmatically without segue in iOS Swift 3


I am using this code for push SHOW and MODALLY programmatically in iOS Objective C.
And now want to know about Swift 3.

NewsDetailsViewController *vc =  instantiateViewControllerWithIdentifier:@"NewsDetailsVCID"];
vc.newsObj = newsObj;
//--this(SHOW)
[self.navigationController pushViewController:vc animated:YES];  
//-- or this(MODAL)
[self presentViewController:vc animated:YES completion:nil];  

Solution

  • Push

    do like

    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let vc = storyboard.instantiateViewControllerWithIdentifier("NewsDetailsVCID") as NewsDetailsViewController 
     vc.newsObj = newsObj
     navigationController?.pushViewController(vc,
     animated: true)
    

    or safer

      if let viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "NewsDetailsVCID") as? NewsDetailsViewController {
            viewController.newsObj = newsObj
            if let navigator = navigationController {
                navigator.pushViewController(viewController, animated: true)
            }
        }
    

    present

       let storyboard = UIStoryboard(name: "Main", bundle: nil)
       let vc = self.storyboard?.instantiateViewControllerWithIdentifier("NewsDetailsVCID") as! NewsDetailsViewController
          vc.newsObj = newsObj
               present(vc!, animated: true, completion: nil)  
    

    or safer

       if let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "NewsDetailsVCID") as? NewsDetailsViewController
         {
    
         vc.newsObj = newsObj
        present(vc, animated: true, completion: nil)
        }