- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个现有的基于 Objective-C 文档的应用程序,我用新的 UIDocumentBrowserViewController 替换了我以前的文件管理器,一切正常——除了我完全不知道如何使用模板选择器创建新文档.根据 WWDC 2017 视频“在 iOS 11 中构建出色的基于文档的应用程序”,您应该这样处理:
func documentBrowser(_ controller: UIDocumentBrowserViewController, didRequestDocumentCreationWithHandler importHandler: @escaping (URL?, UIDocumentBrowserViewController.ImportMode) -> Swift.Void)
{
presentTemplateChooser(completion: {templateURL, canceled) in
if let templateURL = templateURL
{
importHandler(templateURL, .copy)
}
else
{
importHandler(nil, .none)
}
}
对我来说有意义的是呈现模板选择器,但对我来说没有意义的是我在模板选择器上有一个“完成”和“取消”按钮;但是我怎么知道用户何时点击模板选择器上的“完成”或“取消”并将其传递给委托(delegate)函数?有人知道如何在(最好是)Objective-C 中实现这一点吗? (但 Swift 也很好,只是想了解一下这个过程是如何工作的)非常感谢。
最佳答案
我知道您最好使用 Objective-C,但这是 Swift 的可选模式的示例。如果您的 presentTemplateChooser 方法在没有 templateURL 的情况下调用其完成闭包(即它为 nil),则展开 templateURL 将失败(如果 let templateURL = templateURL 将返回 false)。
如果你想知道用户是否明确按下取消,你可以这样做:
像这样创建取消操作:
let cancel = UIAlertAction(title: "Cancel", style: .cancel) { _ in
completion(nil, true)
}
那么您问题中的方法应该是:
func documentBrowser(_ controller: UIDocumentBrowserViewController, didRequestDocumentCreationWithHandler importHandler: @escaping (URL?, UIDocumentBrowserViewController.ImportMode) -> Swift.Void)
{
presentTemplateChooser(completion: {templateURL, canceled) in
if canceled {
print("User canceled")
}
if let templateURL = templateURL
{
importHandler(templateURL, .copy)
}
else
{
importHandler(nil, .none)
}
}
您可以在 Objective-C 中完成所有这些。您只需要检查 nil 而不是解包 templateURL。 (即 if templateURL != nil 而不是 if templateURL = templateURL)。
关于iOS 11 - UIDocumentBrowserViewController 使用模板选择器创建新文档,如何设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45847146/
我正在使用 UIDocumentBrowserViewController 构建应用程序。一切正常(位置和文档出现,并且可以创建,可选择) 突然,文档浏览器显示为空。没有地点,没有文件…… 今天之前,
当我使用 UIDocumentBrowserViewController 并获取文件的 documentURL 时,例如“file:///private/var/mobile/Containers/D
我正在开发一个新的应用程序,我希望用户能够从 iCloud 或外部驱动器中选择一个文件夹。如何允许他们使用 UIDocumentBrowserViewController 选择文件夹? 我尝试将 al
我正在使用 UIDocumentBrowserViewController 来存储文档 (iOS 11+) 的“新方式”。无需 iCloud API、权利等——即可正常工作(在单独的文档浏览器进程的控
有什么方法可以禁止在我的基于 UIDocumentBrowserViewController 且还提供 FileProvider 的应用程序中导出文件? 用户只能在应用中查看和编辑文件。 用户应该能够
Apple 的文档很少涉及基于 UIDocumentBrowserViewController 的应用程序,这些应用程序希望支持同时打开多个文档。 我想启用它,以便用户可以轻松地在两个或多个文档之间复
我在 swift 中遇到了 DocumentBrowserViewController 的一些有趣问题,我想停止多个文件选择并隐藏导航栏中的 Salect 按钮。 出于这个原因,我使用了属性 allo
documentBrowser(_:didRequestDocumentCreationWithHandler:) 的文档说,“创建一个新文档并将其保存到临时位置。如果您使用 UIDocument 子
我一直在开发一个新的基于文档的应用程序,并且对新的 UIDocumentBrowserController 感到非常高兴...尝试为文档浏览器 UI 推出我自己的解决方案很棘手! 创建文档后,我在让浏
UIDocumentBrowserViewController 与 UIDocumentPickerViewController 之间有什么区别,目前使用 UIDocumentPickerViewCo
我有一个现有的基于 Objective-C 文档的应用程序,我用新的 UIDocumentBrowserViewController 替换了我以前的文件管理器,一切正常——除了我完全不知道如何使用模板
Apple 表示,为了在"file"应用程序中显示您应用程序的文档,您的 Info.plist 一方面必须打开“支持文档浏览器”,或者“应用程序支持 iTunes 文件共享”另一方面,“支持就地打开文
事实如下:我有一个使用 iOS 11 的 UIDocumentBrowserViewController 的基于文档的应用程序。正如文档中所述,我将其设置为我的 Root View Controlle
我需要检查目录中的文件是否存在并且可以打开,但是我的 FileManager.default.fileExists(atPath: )返回假。我无法获取所选目录中的项目列表,无法检查我的项目是否存在。
我使用 UIDocumentViewController(来自 Xcode 9 模板)为 iOS 11 创建了一个应用程序。我注册了文档类型以支持 .swift 文件(public.swift-scr
我正在尝试将自定义事件添加到我的 UIDocumentBrowserController 长按菜单 - UIActivityViewController。选择默认共享事件后,它会很好地指向用户刚刚长按
在 iOS 13 上测试时,UIDocumentBrowserViewController 遇到了一个非常奇怪的问题。importHandler(newDocumentURL, .move) 似乎无缘
我是一名优秀的程序员,十分优秀!