如何在iPhone和iPad上呈现UIActivityViewController
呈现UIActivityViewController来共享iOS应用程序中的项目是一项非常简单的任务。
让activityVC = UIActivityViewController(activityItems:[“要共享的字符串”],applicationActivity:nil)present(activityVC,动画:true,完成:nil)
呈现UIActivityViewContoller模态在iPhone上效果很好:
但是,这会导致iPad崩溃:
***由于未捕获的异常“ NSGenericException”而终止应用程序,原因:“您的应用程序已呈现UIActivityViewController()。 在其当前特征环境中,具有此样式的UIActivityViewController的modalPresentationStyle为UIModalPresentationPopover。 您必须通过视图控制器的popoverPresentationController提供此弹出窗口的位置信息。 您必须提供sourceView和sourceRect或barButtonItem。 如果在显示视图控制器时不知道此信息,则可以在UIPopoverPresentationControllerDelegate方法-prepareForPopoverPresentation中提供它。
该错误信息不言自明。 UIActivityViewController在iPad上的弹出窗口中显示。 甚至文档都提到了这一点
在iPad上,必须在弹出窗口中显示视图控制器。
因此,在iPad上,您必须通过提供sourceView和sourceRect或barButtonItem来配置popoverPresentationController。
让activityVC = UIActivityViewController(activityItems:[“要共享的字符串”],applicationActivity:nil)present(activityVC,动画:true,完成:nil)
如果让popOver = activityVC.popoverPresentationController {
popOver.sourceView = self.view
//popOver.sourceRect =
//popOver.barButtonItem
}