我创建了UITabBarController类来以编程方式创建tabbar . 我有两个tabBar项目分别用于两个视图控制器,分别是FirstViewController和SecondViewController . 从第一个视图控制器,我想推送另一个名为DetailViewController的视图控制器 . 在DetailViewController中我想在推送时隐藏tabbar,所以我选中了Attribute Inspector上的“Hide Bottom Bar On Push”按钮 . 它在推送时按预期工作,但是当我弹出视图控制器时,标签栏设计变得混乱 .

Issue:

Storyboard:

Attribute inspector for DetailViewController:

Screen shot

TabViewController Class:

class TabBarViewController: UITabBarController {

override func viewDidLoad() {
    super.viewDidLoad()
    createTab()
 }

func createTab() {
    let firstVC = self.storyboard?.instantiateViewController(withIdentifier: "FirstNav") as! UINavigationController

    let popularIcon = UITabBarItem(title: "", image: UIImage(named: "Setting"), selectedImage: UIImage(named: "Setting"))
    popularIcon.imageInsets = UIEdgeInsets.init(top: 6, left: 0, bottom: -6, right: 0)
    firstVC.tabBarItem = popularIcon

    let secondVC = self.storyboard?.instantiateViewController(withIdentifier: "SecondNav") as! UINavigationController
    let searchIcon = UITabBarItem(title: "",image: UIImage(named: "unselected_Search_Icn"),selectedImage: UIImage(named: "Search_Icn"))
    searchIcon.imageInsets = UIEdgeInsets.init(top: 6, left: 0, bottom: -6, right: 0)
    secondVC.tabBarItem = searchIcon

    self.viewControllers = [firstVC, secondVC]
    self.tabBar.barTintColor = UIColor.red
    }
 }

FirstViewController Class:

class FirstViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

}

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


@IBAction func buttonTapped() {
    let detailVC = self.storyboard?.instantiateViewController(withIdentifier: "DetailViewController") as! DetailViewController
    self.navigationController?.pushViewController(detailVC, animated: true)
     }
   }

DetailViewController Class

class DetailViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

}

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


@IBAction func popTapped() {
    self.navigationController?.popViewController(animated: true)
    }  
 }