我的 webview(和任何视图)仅在一种情况下与我的侧边栏重叠 iOS swift

Posted

技术标签:

【中文标题】我的 webview(和任何视图)仅在一种情况下与我的侧边栏重叠 iOS swift【英文标题】:my webview(and any views) overlap my sidebar in only one scenario iOS swift 【发布时间】:2014-12-17 22:52:01 【问题描述】:

我正在我的项目中实现这个侧边栏:https://github.com/evnaz/ENSwiftSideMenu 到目前为止,在我的第一个视图控制器中非常好:

但在第二个视图控制器中,我的侧边栏位于任何视图后面!我以同样的方式实现了侧边栏。

然后我尝试了以下功能,但没有任何变化:/

    originView.bringSubviewToFront(sideBarConteinerView)

我使用 originView 是因为我在另一个类中创建了我的侧边栏视图

我还在与侧边栏重叠的视图上尝试了以下功能,但我得到了相同的结果。

    self.view.sendSubviewToBack(webview)

我也尝试过同时使用这两个功能,您能帮我解决一下这种情况吗?非常感谢您的帮助。

更新:

VIEW1(正常):

View2(侧边栏重叠):

更新 2:

就在我坚持认为问题已经解决时(请参阅下面的答案),我发现当我从 VC2 回到主 VC1 时,我的 VC1 有两个侧边栏!然后如果我再次访问 VC2,我的 VC2 有 3 个侧边栏!等等!所以我删除了 self.navigationController!.view 并再次将其更改为 self.view 以将其传递给我的侧边栏类,这个错误不再存在,但我的其他视图再次与我的 VC2 中的侧边栏重叠,但在 VC1 中没有:( .

截图更新2:

【问题讨论】:

期望的结果是什么?或者你到底想改变什么? 您能描述一下您的应用程序的结构吗?您的侧边栏只是 VC 中的一个视图吗? WebView 是在同一个 VC 中还是作为子 VC 被交换? @Nick 我想要我的第一个 VC 的相同结果,我希望我的侧边栏高于我的 VC 中的所有视图。正如您在我的第二个屏幕中看到的那样,所有视图都在我的侧边栏上方,我不希望这样。 @MikeCole 我有两个 VC(VC1 和 VC2)和两个 swift 类,用于在我的两个 VC 中的每一个中制作我的侧边栏(一个 tableviewcontroller.swift 和一个 Sidebar.swift)我实现了 SideBarDelegate 和我只将源视图和数据传递给我的侧边栏实例以使我的侧边栏出现(sideBar = SideBar(sourceView: self.view, menuItems: tableNSDictionary)) 所以......在我的VC1中一切正常,我的侧边栏最重要我的 VC1 的子视图,但在我的 VC2 中,任何视图都在我的侧边栏上方,我不知道为什么。顺便说一句..我在情节提要中制作了两个 VC 屏幕,如您所知,我的侧边栏视图代码。 每个 VC 中的侧边栏是否有占位符视图?还是该视图通过委托以编程方式添加到每个 VC? 【参考方案1】:

sideMenuContainerView 可能在 UINavigationController 视图中。你需要打电话 self.navigationController.view.bringSubviewToFront(sideMenuContainerView)

【讨论】:

我在屏幕中使用了以下功能,该功能不起作用,但仍然不起作用 self.view.bringSubviewToFront(sideBar.sideBarConteinerView) 但我注意到您放置了 self ,然后是 navigationController 但 navegationController不是自我吗? 我终于在你的帮助下解决了这个错误,但我不知道我到底做了什么,好吧我会发布答案并给你+1,非常感谢你,如果你有机会请看答案并发表评论 尝试在每个视图控制器的 viewWillAppear 中运行此代码 我终于做对了!但是我把它放在 viewDidAppear 函数中!,我仍然好奇地想知道为什么在我的第一个视图控制器中我不必将子视图带到前面:/【参考方案2】:

我设法得到我想以另一种方式将原始视图传递给我的侧边栏类的结果像这样: sideBar = SideBar(sourceView: self.navigationController!.view, menuItems: tableNSDictionary)

改为: sideBar = SideBar(sourceView: self.view, menuItems: tableNSDictionary)

我不知道 self.view 和 self.navigationController!.view 之间的区别(有人可以告诉我吗?要完全理解),但无论如何奇怪的是,在我的第一个 VC 中,如果我放self.view 或 self.navigationController!.view D:!!我的侧边栏得到了同样好的结果,但在我的第二个 VC 中,我需要将视图传递给我的侧边栏类,如下所示:self.navigationController!.view。

【讨论】:

我终于做对了!但是我把我的bringSubviewToFront 函数放在了viewDidAppear 函数中!,我仍然很想知道为什么在我的第一个视图控制器中我不必把子视图放在前面:/

以上是关于我的 webview(和任何视图)仅在一种情况下与我的侧边栏重叠 iOS swift的主要内容,如果未能解决你的问题,请参考以下文章

如何在一种情况下推送视图控制器,但在另一种情况下以模态方式呈现它?

应用程序在模态显示视图控制器时崩溃

UICollectionViewCell 与自定义 UICollectionViewLayout 仅在一个子视图上创建视差动画

SwiftUI 在一种情况下而不是另一种情况下查看层次结构警告

在没有导航控制器的情况下滑动 Web 视图时如何隐藏工具栏?

Android Webview,仅在链接上启用长点击?