ios - 如何添加默认 ViewController 以及导航抽屉 ViewController
问题描述
我已经实现了一个menuViewVontroller
运行良好的导航抽屉。我能够在它们各自的菜单按钮上呈现视图控制器。我有一个 ViewController 首先加载,然后我从导航菜单中显示其他视图控制器,即主菜单显示homeViewVontroller
等,正如您在屏幕截图中看到的那样。
但我也希望我的应用程序显示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
我该怎么做才能在同一个屏幕上同时渲染 thehomeViewController
和 the 。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
}
}
解决方案
推荐阅读
- sql - 在 hive/SQL 中收集收集集
- node.js - 模型“用户”的路径“_id”处的值“{ id: '5f1c64aa177bf9379491ecc8'}”转换为 ObjectId 失败
- swift - 将链接从字符串转换为 url 问题将链接从字符串转换为 url
- java - 如何从包中生成jar文件?
- reactjs - 如何解决 React 中的 Highcharts xrange 错误?
- c# - 比较asp.net MVC中控制器的多个方法参数长度
- javascript - 在 MongoDB 中搜索和查询整个数据库
- javascript - 处理由 javascript 发出的 JSON 字符串
- javascript - 使用 .cloneContents() 时如何防止标签自动关闭
- ios - iOS 12 的自定义 UICollectionViewFlowLayout 崩溃