Ios 如何将默认ViewController与导航抽屉ViewController一起添加
我为导航抽屉实现了一个运行良好的Ios 如何将默认ViewController与导航抽屉ViewController一起添加,ios,swift,xcode,Ios,Swift,Xcode,我为导航抽屉实现了一个运行良好的menuviewvocontroller。我能够在各自的菜单按钮上渲染视图控制器。我有一个首先加载的视图控制器,然后从导航菜单显示其他视图控制器,即主菜单显示homeviewvocontroller等,如屏幕截图所示 但我也希望我的应用程序在加载viewController时显示homeControllerView。当视图控制器为空时,它当前正在呈现一个空屏幕。当我在viewdiload()方法中编写以下代码时,我没有得到导航抽屉,只显示homeViewCon
menuviewvocontroller
。我能够在各自的菜单按钮上渲染视图控制器。我有一个首先加载的视图控制器,然后从导航菜单显示其他视图控制器,即主菜单显示homeviewvocontroller
等,如屏幕截图所示
但我也希望我的应用程序在加载viewController时显示homeControllerView
。当视图控制器为空时,它当前正在呈现一个空屏幕。当我在viewdiload()
方法中编写以下代码时,我没有得到导航抽屉,只显示homeViewController(如下图所示)
如何在同一屏幕中呈现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
}
}
当用户点击菜单项时,您编写了什么代码?它是否会使用导航控制器来推送
homeViewController
,或者它是如何实现的?顺便问一下,什么是“滑动控制器”
?我以为你的意思是“HomeViewController”,还是我弄错了?@andreasetjen我已经编辑了我的问题,你可以在那里找到代码。另外,SliderController是HomeViewControllerI的情节提要标识符。我还不明白。我们讨论的是主视图控制器,但是您的代码没有在menuType switch/case语句中显示它。其次,看看case.promotion
,我一点也不知道一个单独的晋升控制者会如何参与进来。您只是将topView
替换为空的UIView
。
@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
}
}