Ios 在菜单栏中转换到视图控制器

Ios 在菜单栏中转换到视图控制器,ios,swift,menu,menuitem,menubar,Ios,Swift,Menu,Menuitem,Menubar,我在Gary Tokman的菜单栏(由3部分组成的系列)上完成了本教程的学习,他创建了一个菜单栏,打开一个视图,该视图根据他按下的菜单栏中的项目更改颜色但是,因为我实际上想打开视图控制器,所以我在查看注释,看看是否有人有相同的想法,就像他们在顶部注释中所做的那样然而,用户正在做的是,每次选择菜单项时,它都会在当前视图的顶部放置一个子视图使用菜单栏几次后,您可以看到视图彼此堆叠,内存正在积累选择新菜单项或其他方法时,是否有可行的方法删除每个视图另一个附带问题是:当菜单栏打开时,是否有办法触摸屏幕的

我在Gary Tokman的菜单栏(由3部分组成的系列)上完成了本教程的学习,他创建了一个菜单栏,打开一个视图,该视图根据他按下的菜单栏中的项目更改颜色
但是,因为我实际上想打开视图控制器,所以我在查看注释,看看是否有人有相同的想法,就像他们在顶部注释中所做的那样
然而,用户正在做的是,每次选择菜单项时,它都会在当前视图的顶部放置一个子视图
使用菜单栏几次后,您可以看到视图彼此堆叠,内存正在积累
选择新菜单项或其他方法时,是否有可行的方法删除每个视图
另一个附带问题是:当菜单栏打开时,是否有办法触摸屏幕的黑色部分并将其关闭,而无需选择菜单项。提前谢谢

对于更改视图控制器,容器视图控制器的实现似乎是最好的解决方案。关于你的问题:

选择新菜单项或其他方法时,是否有可行的方法删除每个视图。

是的,它看起来是这样的(例如在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
adnotation才能在此识别器中执行操作


祝你好运

你基本上是在尝试实现一个。在评论中已经给出了一些解决方案,你是否使用了这些或其他东西,请描述一下,你可以发布一些实际的代码吗?