gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 09:06:29 25 4
gpt4 key购买 nike

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

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