vidalbenjoe
vidalbenjoe

Reputation: 975

How navigate from one view to another without using NavigationController?

I want to call the UITabBarController after signing in from a UIViewController

I use the pushViewController but it doesn't work. Here's my code

    let dashboarController = DashboardTabBarController()
    self.navigationController?.pushViewController(dashboarController, animated: false)
    self.dismiss(animated: true, completion: nil)

This is my code in DashboardController

 DashboardTabBarController: UITabBarController, UITabBarControllerDelegate {

override func viewDidLoad() {
    super.viewDidLoad()
    self.delegate = self
    self.view.backgroundColor = UIColor.white

    print("test")
    // Do any additional setup after loading the view.
}

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    let tabOne = MerchantTableViewController()
    let tabOneBarItem = UITabBarItem(title: "Merchant", image: UIImage(named: "icon_merchant"), selectedImage: UIImage(named: "icon_merchant"))
    tabOne.tabBarItem = tabOneBarItem

    let tabTwo = RewardsViewController()
    let tabTwoBarItem2 = UITabBarItem(title: "Rewards", image: UIImage(named: "icon_reward"), selectedImage: UIImage(named: "icon_reward"))
    tabTwo.tabBarItem = tabTwoBarItem2

    let tabThree = ViewController()
    let tabTwoBarItem3 = UITabBarItem(title: "Promos", image: UIImage(named: "icon_promos"), selectedImage: UIImage(named: "icon_promos"))
    tabThree.tabBarItem = tabTwoBarItem3

    let tabFour = MerchantTableViewController()
    let tabTwoBarItem4 = UITabBarItem(title: "Transactions", image: UIImage(named: "icon_card"), selectedImage: UIImage(named: "icon_card"))
    tabFour.tabBarItem = tabTwoBarItem4

    let tabFive = ProfileViewController()
    let tabTwoBarItem5 = UITabBarItem(title: "Profile", image: UIImage(named: "icon_profile"), selectedImage: UIImage(named: "icon_profile"))
    tabFive.tabBarItem = tabTwoBarItem5
    self.viewControllers = [tabOne, tabTwo, tabThree, tabFour, tabFive]

   }
}

I'm a newbie in iOS development. Thanks

Upvotes: 0

Views: 725

Answers (2)

Jyoti
Jyoti

Reputation: 16

  • You should have the view controller from which you are navigating is in the navigation. If it is not, then create a navigation view controller's object with root having you source view controller as root view controller.

If you don't want to use navigation controller then you can use PresentViewController method to present view controller.

Upvotes: 0

dahiya_boy
dahiya_boy

Reputation: 9503

Apple doc says : A navigation controller object manages the currently displayed screens using the navigation stack, which is represented by an array of view controllers. The first view controller in the array is the root view controller. The last view controller in the array is the view controller currently being displayed. You add and remove view controllers from the stack using segues or using the methods of this class.

So now , if you don't wanted to you use UINavigationController and add the UIViewController, follow below methods:

  1. Present ViewController
  2. Add as a Child VC

Upvotes: 0

Related Questions