swift 如何从 UICollectionView 呈现 activityViewController
How to present activityViewController from UICollectionView in swift
我目前有一个 UICollectionView
,我希望能够在其中显示一个 activityViewController
以启用共享(不是来自单元格,而是来自 collectionView 中的 UIView
)。问题是下面的代码不起作用,因为 present()
是一个 viewController 方法。
let activityViewController = UIActivityViewController(activityItems: [test], applicationActivities: nil)
present(activityViewController, animated:true, completion:nil)
我已经尝试创建一个 viewController
的实例来调用 present()
,但是这不起作用,因为它不在视图层次结构中。
我找到的最接近答案的是提到一个弱委托,但我不确定如何让它起作用。
正在寻找有关如何完成这项工作的任何想法。谢谢
更新
我的层次结构由 viewController HomeViewController
组成,然后我在屏幕的下半部分显示一个 collectionView routeDetailCollectionView
。在 routeDetailCollectionView
中,我有一个包含 UIButton shareButton
的 UIView routeHeaderView
a。我想在按下 shareButton
时显示 ios 共享菜单。
您可以使用委托与父 viewcontroller 沟通并从那里呈现。 Oru 如果你正在使用导航控制器,你可以从那里展示它
您应该使用以下方法从 UIApplication
中获取 rootViewController
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)
我目前有一个 UICollectionView
,我希望能够在其中显示一个 activityViewController
以启用共享(不是来自单元格,而是来自 collectionView 中的 UIView
)。问题是下面的代码不起作用,因为 present()
是一个 viewController 方法。
let activityViewController = UIActivityViewController(activityItems: [test], applicationActivities: nil)
present(activityViewController, animated:true, completion:nil)
我已经尝试创建一个 viewController
的实例来调用 present()
,但是这不起作用,因为它不在视图层次结构中。
我找到的最接近答案的是提到一个弱委托,但我不确定如何让它起作用。
正在寻找有关如何完成这项工作的任何想法。谢谢
更新
我的层次结构由 viewController HomeViewController
组成,然后我在屏幕的下半部分显示一个 collectionView routeDetailCollectionView
。在 routeDetailCollectionView
中,我有一个包含 UIButton shareButton
的 UIView routeHeaderView
a。我想在按下 shareButton
时显示 ios 共享菜单。
您可以使用委托与父 viewcontroller 沟通并从那里呈现。 Oru 如果你正在使用导航控制器,你可以从那里展示它
您应该使用以下方法从 UIApplication
中获取 rootViewController
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)