ios – 有没有办法在不弄乱AppDelegate窗口的情况下查看另一个UIViewController后面的UIViewController?

ios – 有没有办法在不弄乱AppDelegate窗口的情况下查看另一个UIViewController后面的UIViewController?,第1张

概述有一个我非常喜欢的图书馆,你可以在这里找到( https://github.com/pixyzehn/MediumMenu). 基本上它执行以下 *** 作: 后面的菜单实际上是一个UIViewController.如果我们深入研究源代码,我们将找到以下非常重要的代码: public init(items: [MediumMenuItem], forViewController: UIViewContro 有一个我非常喜欢的图书馆,你可以在这里找到( https://github.com/pixyzehn/MediumMenu).

基本上它执行以下 *** 作:

后面的菜单实际上是一个UIVIEwController.如果我们深入研究源代码,我们将找到以下非常重要的代码:

public init(items: [MediumMenuItem],forVIEwController: UIVIEwController) {    self.init()    self.items = items    height = screenHeight - 80 // auto-calculate initial height based on screen size    frame = CGRect(x: 0,y: 0,wIDth: screenWIDth,height: height)    contentController = forVIEwController    menuContenttableVIEw = UItableVIEw(frame: frame)    menuContenttableVIEw?.delegate = self    menuContenttableVIEw?.dataSource = self    menuContenttableVIEw?.showsverticalScrollindicator = false    menuContenttableVIEw?.separatorcolor = UIcolor.clearcolor()    menuContenttableVIEw?.backgroundcolor = menuBackgroundcolor    addSubvIEw(menuContenttableVIEw!)    if panGestureEnable {        let pan = UIPanGestureRecognizer(target: self,action: #selector(MediumMenu.dIDPan(_:)))        contentController?.vIEw.addGestureRecognizer(pan)    }    let menuController = UIVIEwController()    menuController.vIEw = self   UIApplication.sharedApplication().delegate?.window??.rootVIEwController = contentController   UIApplication.sharedApplication().delegate?.window??.insertSubvIEw(menuController.vIEw,atIndex: 0)}

前几行并不重要,但是最后一行(处理UIApplication.sharedApplication().委托?.window ??是这个库工作的关键,但它们也限制了库.

根据这些行,我们正在制作UIVIEwController,我们希望菜单为rootVIEwController,然后我们将菜单视图添加到0索引的窗口(我猜这是将它放在后面,后面contentController).

图书馆的问题:

只有在初始视图控制器上需要菜单时,该库才有效.从某种意义上说,只有contentController已经是rootVIEwController.它实际上对我来说在我的应用程序中起作用,但是我不能再回到我原来的UIVIEwController,因为它不再在层次结构中了.

我有一个场景,我有一个登录视图控制器,当你成功登录时,我将你转到我想要菜单的UINavigationController.问题的第一个明显标志是我收到投诉“警告:尝试在LoginVIEwController上呈现UINavigationController,其视图不在窗口层次结构中!”显然,它不在窗口层次结构中,因为我正在重新分配rootVIEwController.

我不知道如何解决这个问题.当UIVIEwController我希望菜单不是初始视图控制器时,有没有办法让这个功能工作?

解决方法 简短的回答是:是的.

这可以通过将UIVIEwControllerTransitioningDelegate分配给包含List-menu的VIEwController并实现interactionControllerForPresentation()和interactionControllerFordismissal()方法来实现.您不必直接触摸UIWindow.

您可以只更改现有库的这一部分,但从它的外观来看,它只是一个带有奇特过渡的tableVIEw.你可以自己轻松实现这一点.

查看Apple的API Reference在交互式过渡和this tutorial由Ray Wenderlich进行示例.

总结

以上是内存溢出为你收集整理的ios – 有没有办法在不弄乱AppDelegate窗口的情况下查看另一个UIViewController后面的UIViewController?全部内容,希望文章能够帮你解决ios – 有没有办法在不弄乱AppDelegate窗口的情况下查看另一个UIViewController后面的UIViewController?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1209486.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存