gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 17:04:25 25 4
gpt4 key购买 nike

这里有一个我非常喜欢的图书馆 (https://github.com/pixyzehn/MediumMenu)。

本质上它做了以下事情:

MediumMenu Demo

后面的菜单其实就是一个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().delegate?.window?? 的行是这个库工作的关键, 但它们也限制了库。

根据这些行,我们正在制作我们希望菜单成为 rootViewController 的 UIViewController,然后我们将菜单 View 添加到 0 索引处的窗口(我猜这就是把它放在后面的原因,在 contentController 后面)。

库的问题:

该库仅在您需要初始 View Controller 上的菜单时才有效。从某种意义上说,只有当 contentController 已经是 rootViewController 时。它实际上会在我的应用程序中为我工作,但我无法返回到我原来的 UIViewController,因为它不再位于层次结构中。

我有一个场景,我有一个登录 View Controller ,当您成功登录时,我会将您转到我想要菜单的 UINavigationController。问题的第一个明显迹象是我收到投诉 “警告:尝试在 View 不在窗口层次结构中的 LoginViewController 上呈现 UINavigationController!” 显然,它不在窗口层次结构中,因为我正在重新分配 rootViewController。

我不知道如何解决这个问题。当我想要打开菜单的 UIViewController 不是初始 View Controller 时,有没有办法让这个功能起作用?

最佳答案

简短的回答是:

这可以通过将 UIViewControllerTransitioningDelegate 分配给包含 list-menuViewController 并实现 interactionControllerForPresentation() 来实现interactionControllerForDismissal() 方法。您不必触摸 UIWindow(直接)。

您可以只更改关于现有 library 的这一部分,但从它的外观来看,它只是一个带有奇特过渡的 TableView。您可以自己轻松实现。

查看 Apple 的 API Reference关于交互式转换和this tutorial由 Ray Wenderlich 编写的示例。

关于ios - 有没有办法在不弄乱 AppDelegate 窗口的情况下查看另一个 UIViewController 后面的 UIViewController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39544010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com