Ios 移动到另一屏幕时停止显示视图控制器
在产品详细信息页面的视图控制器中,我的应用程序中有一个共享按钮。通过按下share按钮(一个在响应后调用的API),我展示了UIActivityViewController以共享URL和其他内容。问题在于,在api获取共享数据的某个阶段,用户可以返回到前一个视图控制器或向前移动到另一个视图控制器 我的问题是,如果UIActivityViewController显示时我不在该屏幕中,我如何停止显示该屏幕?我可能会在导航的下一个屏幕上或向后移动 我面临的另一个问题是,如果UIActivityViewController出现在与上述情况相关的另一个屏幕上,那么我将在iOS 13中禁用整个应用程序交互,因为UIDimming类型的视图出现在主UIWindow中,而在禁用UIActivityViewController时,该视图不会被禁用 代码如下:Ios 移动到另一屏幕时停止显示视图控制器,ios,swift,ios13,presentmodalviewcontroller,swift5.1,Ios,Swift,Ios13,Presentmodalviewcontroller,Swift5.1,在产品详细信息页面的视图控制器中,我的应用程序中有一个共享按钮。通过按下share按钮(一个在响应后调用的API),我展示了UIActivityViewController以共享URL和其他内容。问题在于,在api获取共享数据的某个阶段,用户可以返回到前一个视图控制器或向前移动到另一个视图控制器 我的问题是,如果UIActivityViewController显示时我不在该屏幕中,我如何停止显示该屏幕?我可能会在导航的下一个屏幕上或向后移动 我面临的另一个问题是,如果UIActivityView
@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:。