Я реализовал menuViewVontroller
для навигационной панели, которая работает нормально. Я могу отображать контроллеры на соответствующих кнопках меню. У меня есть один ViewController, который загружается первым, а затем я отображаю другие контроллеры представления из меню навигации, т.е. в главном меню отображается homeViewVontroller
et c. как вы можете видеть на снимках экрана.

Но я также хочу, чтобы мое приложение показывало homeControllerView
когда загружается viewController. В настоящее время он отображает пустой экран, поскольку контроллер представления пуст. Когда я пишу приведенный ниже код в методе viewDidLoad()
, я не получаю навигационную панель, отображается только homeViewController (как показано на рисунке ниже).

let view = UIView()
let controller = storyboard!.instantiateViewController(withIdentifier: "SliderController")
addChild(controller)
view.frame = self.view.bounds
self.view.addSubview(controller.view)
self.topView = view
Что я могу сделать, чтобы отобразить homeViewController
и menuViewController
на одном экране.
РЕДАКТИРОВАТЬ: Мой код, когда пользователь нажимает на пункт меню
@IBAction func didTapMenuButton(_ sender: UIBarButtonItem) {
guard let menuViewController = storyboard?.instantiateViewController(withIdentifier: "MenuViewController") as? MenuViewController else { return }
menuViewController.didTapMenuType = {
menuType in
self.transitionToNew(menuType)
}
menuViewController.modalPresentationStyle = .overCurrentContext
menuViewController.transitioningDelegate = self
present(menuViewController, animated: true)
}
func transitionToNew(_ menuType: MenuType) {
let title = String(describing: menuType).capitalized
self.title = title
topView?.removeFromSuperview()
switch menuType {
case .promotion:
let view = UIView()
view.backgroundColor = .yellow
view.frame = self.view.bounds
self.view.addSubview(view)
self.topView = view
case .billPayment:
let view = UIView()
view.backgroundColor = .blue
view.frame = self.view.bounds
self.view.addSubview(view)
self.topView = view
default:
break
}
}