如何在 Swift(Cocoa 应用程序)中将数据传递给以前的 ViewController

Posted

技术标签:

【中文标题】如何在 Swift(Cocoa 应用程序)中将数据传递给以前的 ViewController【英文标题】:How to pass data to a previous ViewController in Swift (Cocoa Application) 【发布时间】:2016-11-03 16:47:28 【问题描述】:

将数据传递给下一个 viewController 简单明了,可以使用prepareSegue 方法完成。但是,我不明白如何在 Swift(Cocoa Application) 中将数据传递给以前的 viewController

我在 viewControllerB 中有一个文本字段,当您在其中输入内容并按下按钮时,我想将其传递给 viewControllerA 中的标签,而不是在新窗口中打开 viewControllerA,我只想要viewController B 将被关闭,传递的数据将在 viewControllerA 上可见。

仅此而已。在过去的 48 小时里,我一直坚持下去。对此的任何帮助将不胜感激。

谢谢!

【问题讨论】:

你尝试过协议/委托吗? 我们也可以使用 seque unwind 【参考方案1】:

您可以使用委托来执行此操作。示例:

protocol NextProtocol: class 
    func sendBack(value: Int)


class Previous: NextProtocol 
    func sendBack(value: Int) 
        print("I have received \(value)")
    

    func prepareSegue(...) 
        // get next instance
        var next: Next
        next.delegate = self
    


class Next 
   weak var delegate: NextProtocol?

   func someMethod() 
       delegate?.sendBack(5)
     

【讨论】:

只是一个困惑,为什么在 firstViewController 类中使用 'prepareSegue' 函数? @O.Naeem 与您转发数据相同,您转发您希望接收数据的人。我提到prepareSegue是因为你说你在那里转发数据。

以上是关于如何在 Swift(Cocoa 应用程序)中将数据传递给以前的 ViewController的主要内容,如果未能解决你的问题,请参考以下文章

使用 PDFOutline 在 Swift/Cocoa 中将 TOC 添加到 PDFDocument

自定义类 Unarchive 在 Cocoa Swift 中为零

如何使用 Cocoa (Mac) 在 Swift 中创建 PDF

Swift / Cocoa:如何观察文件夹的变化?

图书┃Swift与Cocoa框架开发

如何使用 Swift 为 Cocoa 应用程序中的 NSLider 值更改设置动画