ios - 切换到菜单栏中的 View Controller

标签 ios swift menu menuitem menubar

我完成了 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/

相关文章:

ios - 我在为 ios 构建 expo 应用程序时遇到错误

ios - PresentationLink 始终使用相同的目标对象

ios - 如何在 Swift 4 中的 UIPickerView 中的文本旁边添加图像或图标?

menu - Eclipse 插件 : Add my project type to the "new" menu

macos - cocoa 滚动图像菜单

jquery - 菜单 CSS 问题未解决

ios - UIDatePicker 问题 - 无法正确显示时间

ios - WKWebView 在 iOS 10 及更高版本中不加载 http 图像

iOS 自定义 Segue - 滑过效果

swift - 在 Xcode11 beta 4 中工作但在 beta 5 中停止工作的代码有问题