Ios 移动到另一屏幕时停止显示视图控制器

Ios 移动到另一屏幕时停止显示视图控制器,ios,swift,ios13,presentmodalviewcontroller,swift5.1,Ios,Swift,Ios13,Presentmodalviewcontroller,Swift5.1,在产品详细信息页面的视图控制器中,我的应用程序中有一个共享按钮。通过按下share按钮(一个在响应后调用的API),我展示了UIActivityViewController以共享URL和其他内容。问题在于,在api获取共享数据的某个阶段,用户可以返回到前一个视图控制器或向前移动到另一个视图控制器 我的问题是,如果UIActivityViewController显示时我不在该屏幕中,我如何停止显示该屏幕?我可能会在导航的下一个屏幕上或向后移动 我面临的另一个问题是,如果UIActivityView

在产品详细信息页面的视图控制器中,我的应用程序中有一个共享按钮。通过按下share按钮(一个在响应后调用的API),我展示了UIActivityViewController以共享URL和其他内容。问题在于,在api获取共享数据的某个阶段,用户可以返回到前一个视图控制器或向前移动到另一个视图控制器

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

我面临的另一个问题是,如果UIActivityViewController出现在与上述情况相关的另一个屏幕上,那么我将在iOS 13中禁用整个应用程序交互,因为UIDimming类型的视图出现在主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)
        }
    }
}

我认为你是在倒退。点击按钮后,立即显示活动视图控制器。对于活动项,请使用UIActivityItemProvider


这就是它的全部目的,当您的活动项需要一些时间来获取数据时,充当管道。这是一项操作,因此现在您可以在后台异步联网。同时,“活动”视图打开,并阻止导航,除非用户放弃并取消它

我得说你是在倒退。点击按钮后,立即显示活动视图控制器。对于活动项,请使用UIActivityItemProvider


这就是它的全部目的,当您的活动项需要一些时间来获取数据时,充当管道。这是一项操作,因此现在您可以在后台异步联网。同时,“活动”视图打开,并阻止导航,除非用户放弃并取消它

显示您的代码?@matt我已在上面进行了更新。为什么不在显示activityViewController之前禁用用户交互?你们可以显示一个活动指示器。@KeshuRai我不想让用户等待,若api有时间,那个么用户可以转移到其他东西而不是卡住。用户还可以向后滑动或访问导航栏中的项目。您可以使用此答案检查当前视图控制器是否为topViewController->。如果是topViewController,则显示activityViewController,否则不显示。显示您的代码?@matt我已在上面进行了更新。为什么不在显示activityViewController之前禁用用户交互?你们可以显示一个活动指示器。@KeshuRai我不想让用户等待,若api有时间,那个么用户可以转移到其他东西而不是卡住。用户还可以向后滑动或访问导航栏中的项目。您可以使用此答案检查当前视图控制器是否为topViewController->。如果是topViewController,请出示activityViewController,否则不显示。谢谢回答。如果可能的话,您能用示例进一步解释一下,在UIActivityViewController的当前和api调用完成之后,如何在以后更改其操作吗?答案非常有用。我已经创建了自定义UIActivityItemProvider,它返回我共享URL的帮助:。感谢您的回答。如果可能的话,您能用示例进一步解释一下,在UIActivityViewController的当前和api调用完成之后,如何在以后更改其操作吗?答案非常有用。我已经创建了自定义UIActivityItemProvider,它通过以下帮助返回共享URL:。