gpt4 book ai didi

ios - 移动到另一个屏幕时停止呈现 View Controller

转载 作者:行者123 更新时间:2023-11-28 20:49:36 26 4
gpt4 key购买 nike

我的应用程序在产品详细信息页面的 View Controller 中有一个共享按钮。通过按下共享按钮,然后在响应后调用一个 API,我正在模型中呈现 UIActivityViewController 以共享 URL 和其他内容。问题是在某个阶段 api 有时间获取共享数据,同时用户可以返回到以前的 View Controller 或前进到另一个 View Controller 。

我的问题是,如果 UIActivityViewController 显示时我不在该屏幕中,我该如何停止显示它?我可能会在导航的下一个屏幕上或后退。

我面临的另一个问题是,如果 UIActivityViewController 在上述情况下出现在另一个屏幕上,然后在 iOS 13 中禁用我的整个应用程序交互,因为 UIDimming 类型 View 出现在主 UIWindow 中,在关闭 UIActivityViewController 时不会被关闭.

代码如下:

@IBAction private func toolbarShareStonesBtnPressed(_ sender: UIBarButtonItem) {
guard !isSharingInProgress else { return }
Utils.showLoading(forTargetVC: self)
isSharingInProgress = true
viewModel.getSelectedStonesShareLinks { [weak self] (errorMsg, shareURLs) in
guard let `self` = self else { return }
Utils.hideLoading(forTargetVC: self)
self.isSharingInProgress = false
if let errorMsg = errorMsg {
Utils.showAlert(withMessage: errorMsg)
} else if let shareURLs = shareURLs {
let activityViewController = UIActivityViewController(activityItems: shareURLs , applicationActivities: nil)
activityViewController.popoverPresentationController?.sourceView = self.view
if let popoverController = activityViewController.popoverPresentationController {
popoverController.barButtonItem = sender
popoverController.permittedArrowDirections = .any
}
self.present(activityViewController, animated: true, completion: nil)
}
}
}

最佳答案

我会说你这样做是倒退的。点击按钮时,立即显示事件 View Controller 。对于您的事件项目,请使用 UIActivityItemProvider。

https://developer.apple.com/documentation/uikit/uiactivityitemprovider

这就是它的全部目的,当您的事件项目需要一些时间来获取数据时充当管道。这是一个操作,所以现在您可以在后台异步联网。同时,事件 View 已启动,并阻止导航,除非用户放弃并取消它。

关于ios - 移动到另一个屏幕时停止呈现 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59261529/

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