我完成了 Gary Tokman (https://www.youtube.com/watch?v=vKh1b3ctCf4 3 PART SERIES) 的菜单侧栏教程,他创建了一个菜单栏,该菜单栏打开一个 View ,该 View 根据他按下的菜单栏中的项目更改颜色。但是,由于我实际上想让它打开 View Controller ,所以我在评论中查看是否有人有相同的想法,他们在顶部评论中做了。然而,用户在做什么,每次选择一个菜单项时,它只是在当前 View 的顶部放置一个 subview 。使用菜单栏几次后,您可以看到 View 只是相互堆叠并且内存正在增加。选择新菜单项或其他方法时,是否有可行的方法来删除每个 View 。另一个问题是:当菜单栏打开时,有没有办法在不选择菜单项的情况下触摸屏幕的黑色部分并关闭它。提前致谢!
最佳答案
对于更改 View Controller ,容器 View Controller 的实现似乎是最好的解决方案。至于你的问题:
选择新菜单项或其他方法时,是否有可行的方法来删除每个 View 。
是的,它看起来像这样(例如在 HomeViewController 中):
在添加新 View 之前调用此方法
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
注释以使其成为此识别器中的操作。祝你好运!
关于ios - 切换到菜单栏中的 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60085116/