gpt4 book ai didi

ios - 从另一个 UIViewController Swift iOS 中删除一个 View Controller

转载 作者:可可西里 更新时间:2023-11-01 02:12:51 24 4
gpt4 key购买 nike

我想知道如何才能删除应用程序当前未打开的 View Controller ?

假设我从 OldViewController 转到 NewViewController。加载 NewVC 后,如何让它删除 OldVC,而应用仍在 NewVC 上?

最佳答案

我试过了 unwind seguesdismiss nested presentingViewController解决方案,但两者仍然存在中间 Controller 在动画期间可见的问题。

然后我找到了这个suggestion我用不同的快照生成修改了它,因为它对我来说工作不正常。

可能不是最好的解决方案,但仍然可能有帮助。

辅助扩展:

extension UIViewController {
func dismissModalStack(animated: Bool, completion: (()->Void)?) {
guard let snapshot = UIApplication.shared.delegate?.window??.snapshotView() else { return }
self.presentedViewController?.view.insertSubview(snapshot, at: Int.max)
self.dismiss(animated: true, completion: completion)
}
}

extension UIView {
public func snapshotImage() -> UIImage? {
UIGraphicsBeginImageContextWithOptions(bounds.size, isOpaque, 0)
drawHierarchy(in: bounds, afterScreenUpdates: false)
let snapshotImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return snapshotImage
}

public func snapshotView() -> UIView? {
guard let snapshotImage = snapshotImage() else { return nil }
return UIImageView(image: snapshotImage)
}
}

用法:

在最后呈现的 View Controller 中:

@IBAction func dismissPressed() {
self.presentingViewController?.presentingViewController?.dismissModalStack(animated: true, completion: nil)
}

结果:

enter image description here

关于ios - 从另一个 UIViewController Swift iOS 中删除一个 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40517254/

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