Ios 如何在swift中将一个值从一个委托传递给另一个委托?
我想将documentPicker中的url传递给previewController。由于他们都是代表,我不能简单地返回,因为这将违反协议。如何将数据从一个视图传递到另一个视图?谢谢Ios 如何在swift中将一个值从一个委托传递给另一个委托?,ios,swift,Ios,Swift,我想将documentPicker中的url传递给previewController。由于他们都是代表,我不能简单地返回,因为这将违反协议。如何将数据从一个视图传递到另一个视图?谢谢 func previewController(controller: QLPreviewController!, previewItemAtIndex index: Int) -> QLPreviewItem! { //var doc = NSURL(fileURLWithPath: url)
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)
}
及
通过这样做,我避免了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——文件://)
它们是一样的。为什么应用程序会中断?您可以将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
}
关于
计算机科学
标签不太确定…首先非常感谢!但是我得到了这个错误:属性列表对于格式200无效(属性列表不能包含'CFURL'类型的对象)尝试设置非属性列表对象file:///private/var/mobile/Containers/Data/Application/E35D89E8-3C43-47CC-8F69-265AAAC06F21/tmp/DocumentPickerIncoming/Experiment_7.PDF 作为键URL的NSUserDefaults/CFPreferences值,他们似乎不喜欢URL类型。如何解决这个问题?非常感谢。我想。但我的名声太低,不能这么做。一旦我获得了足够的声誉,我就会这么做。
func previewController(controller: QLPreviewController!, previewItemAtIndex index: Int) -> QLPreviewItem! {
var doc = NSUserDefaults.standardUserDefaults().objectForKey("URL") as! NSUrl
return doc
}