Я создал класс UITabBarController для программного создания панели вкладок.У меня есть два элемента tabBar для двух контроллеров представления, которые являются FirstViewController и SecondViewController соответственно.Из контроллера первого представления я хочу нажать другой контроллер представления с именем DetailViewController.В DetailViewController я хочу скрыть панель вкладок при нажатии, поэтому я установил флажок «Скрыть нижнюю панель при нажатии» в Инспекторе атрибутов.Он работает, как и ожидалось, при нажатии, но дизайн панели вкладок испортился, когда я открываю контроллер представления.
Проблема:
Раскадровка:
Инспектор атрибутов для DetailViewController:
Класс 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)
}
}