UITabBarItem перемещается вверх, когда UIViewController извлекается из стека навигации - PullRequest
0 голосов
/ 10 декабря 2018

Я создал класс UITabBarController для программного создания панели вкладок.У меня есть два элемента tabBar для двух контроллеров представления, которые являются FirstViewController и SecondViewController соответственно.Из контроллера первого представления я хочу нажать другой контроллер представления с именем DetailViewController.В DetailViewController я хочу скрыть панель вкладок при нажатии, поэтому я установил флажок «Скрыть нижнюю панель при нажатии» в Инспекторе атрибутов.Он работает, как и ожидалось, при нажатии, но дизайн панели вкладок испортился, когда я открываю контроллер представления.

Проблема:

Раскадровка:

Инспектор атрибутов для DetailViewController:

Screen shot

Класс TabViewController:

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 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)
    }  
 }
...