iOS 中的 UIActivityViewController

17 Mar 2025 | 5 分钟阅读

UIActivityViewController 是一个对象,用于提供标准服务,例如通过设备上可用的活动项目共享应用程序中的项目。 UIActivityViewController 继承自 UIViewController 类。

UIActivityViewController 的声明如下。

有几个标准服务,例如将项目复制到剪贴板、使用电子邮件、短信或设备上可用的任何其他选项发送应用程序项目、将内容发布到社交媒体网站等。我们还可以在应用程序中定义我们的自定义服务。

我们的应用程序配置、呈现和关闭 UIActivityViewController。 但是,我们必须在呈现 UIActivityViewController 之前定义数据对象。 我们还可以指定我们的应用程序支持的自定义服务列表。 在 iPad 上,应用程序必须在弹出窗口中呈现 UIActivityViewController,而在 iPhone 和 iPod touch 上,我们可以以模态方式呈现它。

在本教程中,我们将创建一个 iOS 应用程序,该应用程序使用 UIAcitivityViewController 来使用我们应用程序中的标准服务。我们将创建一个自定义共享按钮,该按钮将显示共享应用程序中的项目的选项。

让我们创建 XCode 项目作为 ActivityDemo,如下所示。

UIActivityViewController in iOS

完成项目创建后,让我们在界面构建器中配置视图控制器。 将视图控制器嵌入到导航控制器中,在导航栏中定义视图控制器的标题,并添加一个用于触发共享的栏按钮项。

UIActivityViewController in iOS

在此应用程序中,我们还将添加一个表格视图,该视图将显示车辆列表,以便在选择特定车辆后共享它。

让我们将表格视图添加到视图控制器。

UIActivityViewController in iOS

让我们创建 UITableViewCell 的子类,将其分配给我们的单元格,并连接图像视图和标题标签的插座。

将以下代码添加到 ViewController.swift 中以配置表格视图。

现在,如果我们在模拟器上运行该应用程序,主屏幕将如下所示。

UIActivityViewController in iOS

要共享任何车辆,用户需要从列表中选择该车辆,然后单击添加为右栏按钮项的共享按钮。 为此,让我们在视图控制器中连接右栏按钮项的操作插座和 tableview 的 didSelectRowAt(: ) 委托方法。

让我们在 ViewController 中定义以下属性,以在用户选择任何表格视图行时存储所选车辆名称。

现在,在 tableview 委托方法中添加以下方法。

让我们在 clickedShareButton 中编写共享按钮事件的代码。 用户单击共享按钮后,我们将显示活动视图控制器。

在显示视图控制器之前,我们还需要验证用户是否在单击共享按钮之前选择了任何行。

现在,运行该应用程序,选择要共享的任何车辆。 该应用程序将如下所示运行。

UIActivityViewController in iOS

该应用程序将显示更多选项,例如电子邮件、WhatsApp 等,具体取决于 iOS 设备上可用的共享选项。

默认情况下,活动控制器显示可用于提供的项目类型(图像或字符串)的所有活动。 但是,我们可以排除活动控制器的活动类型,如下所示。

这不会在活动控制器中显示复制选项。

ViewController.swift 包含以下代码。

ViewController.swift