В основном у меня есть приложение с контроллером root, являющимся контроллером панели вкладок, каждая вкладка нуждается в отдельном стеке навигации, но с похожим интерфейсом для панели навигации
, поэтому я имею
class CommonNavigationController: UINavigationController {
override func viewDidLoad() {
super.viewDidLoad()
navigationBar.barTintColor = .orange
let searchController = UISearchController(searchResultsController: nil)
navigationItem.searchController = searchController
navigationItem.searchController?.searchBar.placeholder = "search"
}
}
, а затем два подкласса общего контроллера навигации
final class TabTwoNavigationViewController: CommonNavigationController {
override func viewDidLoad() {
super.viewDidLoad()
}
}
final class TabOneNavigationViewController: CommonNavigationController {
override func viewDidLoad() {
super.viewDidLoad()
}
}
и родительский контроллер панели вкладок выглядит следующим образом
final class MainTabBarViewController: UITabBarController {
init() {
super.init(nibName: nil, bundle: nil)
let tabOneNavigationViewController = TabOneNavigationViewController()
let tabOneIcon = UITabBarItem(title: "One", image: UIImage(systemName: "rectangle"), selectedImage: UIImage(systemName: "circle"))
tabOneNavigationViewController.tabBarItem = tabOneIcon
let tabTwoNavigationViewController = TabTwoNavigationViewController()
let tabTwoIcon = UITabBarItem(title: "Two", image: UIImage(systemName: "square"), selectedImage: UIImage(systemName: "circle"))
tabTwoNavigationViewController.tabBarItem = tabTwoIcon
viewControllers = [tabOneNavigationViewController, tabTwoNavigationViewController]
selectedIndex = 1
tabBar.isTranslucent = false
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
что чёрт, я не так делаю? Я не могу отобразить панель поиска!
Большое спасибо за чтение!