简体   繁体   中英

Swift How to present Tabbar on Button click

In my project i want to present Tabbar on button click, now i have already created tabbar and i give identity name as "tabbar" that i show you in below image

在此输入图像描述

so now i am using below code to call Tab bar controller but i am not getting it.

 let tabbar: UITabBarController? = (storyboard.instantiateViewController(withIdentifier: "tabbar") as? UITabBarController)

 navigationController?.pushViewController(tabbar, animated: true)

can you guys suggest me what i need to do and which code is useful to me to present Tabbar controller.

For more specification : i added below image in which there is blue button in one viewController i want to present tab bar controller on click of that blue button

在此输入图像描述

Thank you.

Try this and see:
Using Storyboard Segue: Connect your segue as present modally with your action button.

在此输入图像描述

Programatically : Use self of view controller (UIViewController) and present it modally, like this.

if let tabbar = (storyboard.instantiateViewController(withIdentifier: "tabbar") as? UITabBarController) {
    self.present(tabbar, animated: true, completion: nil)
}

Here is result:

在此输入图像描述

使用这个,你没有那里的导航控制器,这就是为什么它不会这样推,相反,你需要使用以下代码:

self.present(tabbar, animated: true, completion: nil)

You should be aware that Apple's HIG (Human Interface Guidelines) say that if you have a tabbed application that should be the root-level navigation for the entire app. you're not supposed to do what you are trying to do from a human interface perspective.

That said, it should be technically possible.

My guess is that you don't have a navigation controller.

Use the debugger to check the value of self.navigationController , or add a print statement:

 let tabbar: UITabBarController? = (storyboard.instantiateViewController(withIdentifier: "tabbar") as? UITabBarController)
 print("navigationController = \(navigationController)")
 print("tabbar = \(tabbar)")

 navigationController?.pushViewController(tabbar, animated: true)

If either navigationController or tabbar displays as nil, that's your problem.

Select the viewController from which the button click triggered and Select Editor form xcode menu->Embed In->NavigationController.

then write this in button action

   let tabbar: UITabBarController? = (self.storyboard?.instantiateViewController(withIdentifier: "tabbar") as? UITabBarController)

    self.navigationController?.pushViewController(tabbar!, animated: true)

According to your images I think that your tabBarController has no back button. Means user cannot go back.

If that is the case you can do this.

    let tabBar = self.storyboard?.instantiateViewController(withIdentifier: "tabBar")
   let appDelegate = UIApplication.shared.delegate as! AppDelegate
    appDelegate.window?.rootViewController = tabBar

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM