Ariel Gemilang
Ariel Gemilang

Reputation: 791

How to add navigation controller programmatically, i'm using XIB file swift

i want to create navigation bar but nothing happens

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    let viewController = DummyViewController(nibName: nil, bundle: nil) 
    let navigationController = UINavigationController(rootViewController: viewController)

    self.window = UIWindow(frame: UIScreen.main.bounds)
    self.window?.rootViewController = navigationController
    self.window?.makeKeyAndVisible()

    let tabBarController = UITabBarController()
    let tabViewController1 = DummyViewController(
        nibName: "DummyViewController",
        bundle: nil)
    let tabViewController2 = SearchViewController(
        nibName:"SearchViewController",
        bundle: nil)

    tabViewController1.tabBarItem = UITabBarItem(
        title: "Location",
        image: UIImage(named: "ic_location_blue"),
        tag: 1)
    tabViewController2.tabBarItem = UITabBarItem(
        title: "Search",
        image:UIImage(named: "ic_search_blue") ,
        tag:2)


    let controllers = [tabViewController1,tabViewController2]
    tabBarController.viewControllers = controllers
    window?.rootViewController = tabBarController

    return true
}

it seems because i add self.window?.rootViewController = navigationController and window?.rootViewController = tabBarController

i'm using xib file, and don't know how to use tab bar controller with navigation controller together, thanks before.

Upvotes: 0

Views: 5453

Answers (3)

Ariel Gemilang
Ariel Gemilang

Reputation: 791

solved using

let FirstViewController: HomeViewController = HomeViewController(nibName: "HomeViewController", bundle: nil)
    let navigationBarFirst = UINavigationController(rootViewController: FirstViewController)

    let SecondViewController: SearchViewController = SearchViewController(nibName: "SearchViewController", bundle: nil)
    let navigationBarSecond = UINavigationController(rootViewController: SecondViewController)

    let ThirdViewController: InformationViewController = InformationViewController(nibName: "InformationViewController", bundle: nil)
    let navigationBarThird = UINavigationController(rootViewController: ThirdViewController)

    let FourthViewController: FavoritesViewController = FavoritesViewController(nibName: "FavoritesViewController", bundle: nil)
    let navigationBarFourth = UINavigationController(rootViewController: FourthViewController)

    let FifthViewController: MenuViewController = MenuViewController(nibName: "MenuViewController", bundle: nil)
    let navigationBarFifth = UINavigationController(rootViewController: FifthViewController)

    let tabBarController = UITabBarController()

    let controllers = [navigationBarFirst, navigationBarSecond, navigationBarThird, navigationBarFourth, navigationBarFifth]

Upvotes: 1

Riajur Rahman
Riajur Rahman

Reputation: 2034

you could try this

let viewController = DummyViewController(nibName: nil, bundle: nil)
let navigationController = UINavigationController()
navigationController.viewControllers = [viewController!]
self.window!.rootViewController = navigationController
self.window?.makeKeyAndVisible()

Hope it helps.

Upvotes: 2

pkc
pkc

Reputation: 8516

You are writing the nil as nib name. Enter the nib name as follows:-

let viewController = DummyViewController(nibName: "DummyViewController", bundle: nil)

Upvotes: 0

Related Questions