首页 > 解决方案 > UIActivityViewController 的标题是怎么设置的?

问题描述

UIActivityViewController 的标题是如何设置的?我有一个使用自定义 UIActivityItemProvider 和自定义 UIActivity 的 UIActivityViewController。

出现在 UIActivityItemController 顶部的标题最初很简单,“ / ”,没有字幕,然后大约一秒钟后变为“ System@snap-2237692 ”,带有“ File ”的字幕,如根据下面的屏幕截图。

这些标题来自哪里?如何控制此处显示的内容?

我已经尝试显式设置视图控制器的“标题”属性,但这没有什么区别。

在此处输入图像描述

标签: swiftuiactivityviewcontroller

解决方案


经过一番反复试验,我发现更改占位符项目会更改 UIActivityViewController 中显示的标题,并且标题似乎仅用于文件/URL。

我提供了各种占位符项,其中大部分都是不同数据类型(即数组、字典、数据和打印页面渲染器)的有效空对象。因为它们都是空的,所以 UIActivityViewController 根本不显示这些标题。

但是,我还提供了稍后将生成的文件的 URL。我最初将此 URL 的占位符提供为URL(fileURLWithPath: ""). 所以我猜想标题中显示的初始“/”实际上意味着文件系统根目录。我不知道随后显示的“System@snap-...”是什么意思!

但是我发现,如果我将这个特定的占位符项目更改为类似URL(fileURLWithPath: "Some Text"),那么我提供的任何文本作为 URL(或实际上作为 URL 的文件名部分 - 即最后一个“/”之后的所有内容,如果有一)是显示为 UIActivityViewController 的标题。

所以现在,至少对于这种情况,我找到了一种方法来控制那里显示的标题。更重要的是,要摆脱在这种情况下显示的胡言乱语。

我很欣赏占位符中的 URL 应该与实际项目中的 URL 相同,因此会有一个有意义的名称。但有时我在处理数据之前没有最终文件名,因此在最初提供占位符时无法知道它。

如果有多个占位符项可用于生成有用的标题,我仍然有兴趣了解 UIActivityViewController 如何选择标题。如何选择一个而不是另一个?为什么没有为字符串项或属性字符串项提供标题,而只为文件/URL 项提供标题?


推荐阅读