在产品详细信息页面的视图控制器中,我的应用程序中有一个共享按钮。通过按下共享按钮,一个在响应后调用的 API,我正在展示 UIActivityViewController 以共享 URL 和其他内容。问题是在某些阶段 api 有时间获取共享数据,同时用户可以返回到以前的视图控制器或前进到另一个视图控制器。
我的问题是,如果 UIActivityViewController 将要呈现时我不在该屏幕中,我该如何停止呈现?我可能在导航中的下一个屏幕上或向后移动。
如果 UIActivityViewController 在上述情况下出现在另一个屏幕上,那么我面临的另一个问题是,由于 UIDimming 类型的视图出现在主 UIWindow 中,而在解除 UIActivityViewController 时没有被解除,因此我将在 iOS 13 中解除我的整个应用程序交互。
这是代码:
@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)
}
}
}