【发布时间】:2019-12-05 19:16:54
【问题描述】:
我正在尝试制作一个对单击的汉堡图标做出反应的侧边菜单。
我创建了另一个带有 ViewConroller 的故事板,其中包含 TableView。
我为这个故事板 ViewController 创建了一个 ViewController。
在第一个 ViewController(不是容器)中,我有以下代码:
var menuVC: UIViewController!
var isExpanded = false
@IBAction func MenuTapped(_ sender: UIButton) {
isExpanded = !isExpanded
showMenuVC(shouldExpand: isExpanded)
}
func showMenuVC(shouldExpand: Bool) {
if shouldExpand {
// show menu
if menuVC == nil {
print ("ONLY ONCE")
let storyboard = UIStoryboard(name: "Menu", bundle: .main)
menuVC = storyboard.instantiateViewController(withIdentifier: "MenuSB") as! MenuVC
menuVC.view.frame = self.view.frame.offsetBy(dx: view.frame.width, dy: 0)
menuVC.willMove(toParent: self)
self.view.insertSubview(menuVC.view, at: 0)
self.addChild(menuVC)
menuVC.didMove(toParent: self)
}
UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: .curveEaseInOut, animations: {
self.view.frame.origin.x = 80 - self.view.frame.width
}, completion: nil)
} else {
// hide menu
UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: .curveEaseInOut, animations: {
self.view.frame.origin.x = 0
}, completion: nil)
}
}
问题是,TableView 没有响应任何内容。不滚动,不点击。我也尝试了一个 UIButton,它是不可点击的。
问题是,第一个 ViewController 处于活动状态,而 MenuVC 不处于活动状态。
让它们都处于活动状态很重要,因为第一个 ViewController 中的汉堡图标会关闭菜单,但我需要 MenuVC 也处于活动状态。
有什么想法吗?
【问题讨论】:
-
使用视图调试器。在它的超级视图之外寻找一个视图。无法触摸其父视图之外的视图。
-
@matt 我已经知道它在超级视图之外。如何解决这个问题?我错过了什么?
-
好吧,不要那样做。一旦一个视图在它的父视图之外,它和它的所有子视图都是不可触及的。这是一个不连贯的视图层次结构。
-
如果您不介意使用第三方库,请查看SideMenu
标签: ios swift uiviewcontroller uibutton parent-child