我想将 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/