gpt4 book ai didi

ios - 快速打开文件

转载 作者:搜寻专家 更新时间:2023-10-31 22:06:09 28 4
gpt4 key购买 nike

当您打开包含 PDF 文件的 url 时,safari 会询问您是要在 safari 上还是在 iBook 中打开它。

我想做同样的事情,在我的项目中,我有一个包含视频和照片的 Collection View ,我希望用户选择是要在应用程序上打开文件还是使用其他媒体播放器打开文件。

最佳答案

要加载到您自己的应用程序中,这取决于您使用哪个类在您要使用的确切代码上显示内容,但要在另一个应用程序中打开,您通常会使用共享按钮。如果您将 @IBAction@IBOutlet 连接到 UI 中的同一个栏按钮(并将文件放在您指定的 fileURL 中),下面的示例代码将起作用):

import UIKit
class ViewController: UIViewController {

// UIDocumentInteractionController instance is a class property
var docController:UIDocumentInteractionController!
@IBOutlet weak var shareButton: UIBarButtonItem!
// called when bar button item is pressed
@IBAction func shareDoc(sender: AnyObject) {
// present UIDocumentInteractionController
if let barButton = sender as? UIBarButtonItem {
docController.presentOptionsMenuFromBarButtonItem(barButton, animated: true)
}
else {
print("Wrong button type, check that it is a UIBarButton")
}

}

override func viewDidLoad() {
super.viewDidLoad()
// retrieve URL to file in main bundle
if let fileURL = NSBundle.mainBundle().URLForResource("MyImage", withExtension: "jpg") {
// Instantiate the interaction controller
self.docController = UIDocumentInteractionController(URL: fileURL)
}
else {
shareButton.enabled = false
print("File missing! Button has been disabled")
}
}

}

注意事项

A UIDocumentInteractionController用于在您的应用程序和安装在用户设备上的其他应用程序之间启用文档共享。只要记住三个规则,设置起来就很简单:

  1. 始终使 UIDocumentInteractionController 实例成为一个类(类型)属性(property)。如果您只保留对 Controller 的引用在按下按钮触发的方法的生命周期内你的应用会崩溃。

  2. 配置 UIDocumentInteractionController在按下调用该方法的按钮之前应用程序正在等待弹出窗口出现的等待。这很重要,因为虽然 Controller 的呈现是异步发生的,实例化不是。你可能会发现打开弹出窗口有明显的延迟你把所有用于实例化和展示的代码都放在一个按下按钮时调用的单一方法。 (在测试时,你可能会看到延迟,因为分享按钮可能会被直接按下,但在现实世界中, Controller 应该有更多的时间来准备自己,因此延迟的可能性较小。)

  3. 第三条规则是您必须在真实设备上而不是在模拟器中测试它。

UIDocumentInteractionController Image更多可以在我的blogpost中找到关于这个问题。

编辑:使用 UIActivityViewController

使用 UIActivityViewController 而不是 UIDocumentInteractionController 的代码

import UIKit
class ViewController: UIViewController {

// UIDocumentInteractionController instance is a class property
var activityController: UIActivityViewController!
@IBOutlet weak var shareButton: UIBarButtonItem!
// called when bar button item is pressed
@IBAction func shareStuff(sender: AnyObject) {
if let barButton = sender as? UIBarButtonItem {
self.presentViewController(activityController, animated: true, completion: nil)
let presCon = activityController.popoverPresentationController
presCon?.barButtonItem = barButton
}
else {
print("not a bar button!")
}

}

override func viewDidLoad() {
super.viewDidLoad()
// retrieve URL to file in main bundle
if let img = UIImage(named:"MyImage.jpg") {
// Instantiate the interaction controller
activityController = UIActivityViewController(activityItems: [img], applicationActivities: nil)
}
else {
shareButton.enabled = false
print("file missing!")
}
}

}

您也可以add custom activities到 UIActivityViewController 和 here is code用于向 UIActivityViewController 添加“打开方式...”按钮,以便您可以从 UIActivityViewController 切换到 UIDocumentInteractionController。

关于ios - 快速打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38549494/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com