ios - 如何 swift 将值从委托(delegate)传递给另一个委托(delegate)?

标签 ios swift

我想将 documentPicker 中的 url 传递给 previewController。由于他们都是代表,我不能简单地返回,因为那样会违反协议(protocol)。如何将数据从一个 View 传递到另一个 View ?谢谢!

func previewController(controller: QLPreviewController!, previewItemAtIndex index: Int) -> QLPreviewItem! {
    //var doc = NSURL(fileURLWithPath: url)
    return doc
}
func documentPicker(controller: UIDocumentPickerViewController, didPickDocumentAtURL url: NSURL) {
    println("\(url)")
    var quickView = QLPreviewController()
    quickView.dataSource = self
    presentViewController(quickView, animated: true, completion: nil)
}

~~~~~~~~~~~更新~~~~~~~~~6.2~~~~~~~~~~~~~~ 现在我按照答案的想法如下

func documentPicker(controller: UIDocumentPickerViewController, didPickDocumentAtURL url: NSURL) {
    println("\(url)")

    var a: String = "\(url)"

    NSUserDefaults.standardUserDefaults().setObject(a, forKey: "URL")

    var quickView = QLPreviewController()


    quickView.dataSource = self

    presentViewController(quickView, animated: true, completion: nil)




}

func previewController(controller: QLPreviewController!, previewItemAtIndex index: Int) -> QLPreviewItem!{

    var  url = NSUserDefaults.standardUserDefaults().objectForKey("URL") as! String
    var doc = NSURL(fileURLWithPath: url)
    return doc
}

这样做我避免了 NSUserDefaults 的格式问题,但程序仍然在 doc 处中断(线程 1:断点 1.1)

例如,运行它并选择一个文件时,url是 file:///private/var/mobile/Containers/Data/Application/DEE5190D-6E3F-4400-8866-4668B830C588/tmp/DocumentPickerIncoming/Experiment_7.PDF

文档是:可选(文件:/private/var/mobile/Containers/Data/Application/DEE5190D-6E3F-4400-8866-4668B830C588/tmp/DocumentPickerIncoming/Experiment_7.PDF -- file:///)

它们是一样的。为什么应用会中断?

最佳答案

那么您可以将您的 Url 存储在 NSUserDefaults 中。随时随地使用它。您可以将文本存储在 NSUserDefaults

func documentPicker(controller: UIDocumentPickerViewController, didPickDocumentAtURL url: NSURL) {
println("\(url)")

NSUserDefaults.standardUserDefaults().setObject(url, forKey: "URL")

var quickView = QLPreviewController()


quickView.dataSource = self

presentViewController(quickView, animated: true, completion: nil)

}

并在

中检索它
func previewController(controller: QLPreviewController!, previewItemAtIndex index: Int) -> QLPreviewItem! {

var doc = NSUserDefaults.standardUserDefaults().objectForKey("URL") as! NSUrl
return doc
}

关于ios - 如何 swift 将值从委托(delegate)传递给另一个委托(delegate)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30566313/

相关文章:

ios - 寻找自定义 View 时崩溃

objective-c - Objective-C : Memory Leak due to 'Incorrect decrement of reference count'

ios - 通过 segue 传递数据库数据

ios - 弹出 View 时,完成处理程序会发生什么?

swift - 更改 UNTimeIntervalNotificationTrigger 的重复值

ios - 如何让 iOS 应用程序支持 iPhone 6,而不支持 iPhone 5S?

ios - UISearchController 使 UITableView 的内容变黑

ios - 尝试保存数组时出现错误 - 无法将类型 '[Data]' 的值转换为预期的参数类型 '[Dictionary<String, AnyObject>]'

ios - 如何在 UITabBarController 内部使用导航 Controller 和 Swift 上的 Storyboard

swift - 基于用户属性的 Firebase 受众群体