我完成了Gary Tokman(https://www.youtube.com/watch?v=vKh1b3ctCf4 3 PART SERIES)在菜单侧栏上的本教程的讲解,他在其中创建了一个菜单栏,该菜单栏打开一个视图,该视图根据所按菜单栏中的项目来改变颜色。但是,由于实际上我想使其打开视图控制器,因此我在注释中查找是否有人有相同的想法,就像他们在顶部注释中所做的那样。但是,用户正在做的是每次选择菜单项时,它只是将子视图放在当前视图的顶部。在使用菜单栏几次之后,您可以看到视图只是彼此堆叠,并且内存正在累积。当选择了新的菜单项或其他方法时,是否有可行的方法来删除每个视图。另一个问题是:打开菜单栏时,有一种方法可以触摸屏幕的黑色部分并关闭它,而无需选择菜单项。预先感谢!
对于更改视图控制器,实现容器视图控制器似乎是最好的解决方案。至于您的问题:
当选择新菜单项或其他方法时,是否存在删除每个视图的可行方法。
是,看起来像这样(例如在HomeViewController中):在添加新视图之前,请调用此方法
func clearSubviews() {
for v in self.view.subviews {
v.removeFromSuperview()
}
}
对于打开菜单栏时,有一种方法可以触摸屏幕的黑色部分并关闭它而不选择菜单项。
只需创建一个向后过渡的方法-基本上类似于animateTransition(...)
,但不更改框架以外的任何内容。然后创建手势识别器,并将其添加到dimmingView中,如下所示:
var recognizer = UITapGestureRecognizer.init(target: self, action: #selector(transitionBack))
dimmingView.addGestureRecognizer(recognizer)
手势识别器不应该在dimmingView alpha设置为零时被调用,因此在隐藏菜单时不会被调用。
当然transitionBack
必须具有@objc
注释,以便可以在此识别器中进行操作。
祝你好运!