我现在有一个UICollectionView
可以显示一个activityViewController
来启用共享(不是从单元格,而是从collectionView中的UIView
)。问题是以下代码不起作用,因为present()
是一个viewController方法。
let activityViewController = UIActivityViewController(activityItems: [test], applicationActivities: nil)
present(activityViewController, animated:true, completion:nil)
我试着创建一个
viewController
的实例来调用present()
,但是这不起作用,因为它不在视图层次结构中。最接近我找到答案的是提到一个软弱的代表,但我不确定如何使之发挥作用。
想知道怎么做。谢谢
更新
我的层次结构由viewController
HomeViewController
组成,然后在屏幕的下半部分显示collectionViewrouteDetailCollectionView
。在routeDetailCollectionView
中,我有一个包含UIButtonrouteHeaderView
的UIViewshareButton
a。我想在按下shareButton
时显示ios共享菜单。 最佳答案
您应该使用下面的方法从rootViewController
获取UIApplication
func topMostController() -> UIViewController {
var rootViewController: UIViewController = UIApplication.shared.keyWindow!.rootViewController!
while (rootViewController.presentedViewController != nil) {
rootViewController = rootViewController.presentedViewController!
}
return rootViewController
}
之后,使用
rootViewController
显示UIActivityViewController
let rootViewController = topMostController()
let activityViewController = UIActivityViewController(activityItems: [test], applicationActivities: nil)
rootViewController?.present(activityViewController, animated:true, completion:nil)
关于ios - 如何从UICollectionView中快速呈现activityViewController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50284559/