首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

通过另一个ViewController从ViewController获取数据

从一个ViewController获取数据可以通过委托模式或者闭包来实现。

  1. 委托模式: 委托模式是一种常见的在iOS开发中用于传递数据的方式。在这种模式下,我们可以定义一个协议(Protocol),协议中定义了获取数据的方法。然后在源ViewController中,我们可以声明一个委托属性,并在合适的时机将自己设置为委托对象。在目标ViewController中,我们需要实现协议中定义的方法,并在需要获取数据的地方调用委托对象的方法来获取数据。

示例代码如下:

在源ViewController中:

代码语言:swift
复制
protocol DataDelegate: class {
    func getData(data: Any)
}

class SourceViewController: UIViewController {
    weak var delegate: DataDelegate?

    // 在某个事件触发时调用委托方法
    func sendData() {
        let data = // 获取数据的逻辑
        delegate?.getData(data: data)
    }
}

在目标ViewController中:

代码语言:swift
复制
class TargetViewController: UIViewController, DataDelegate {
    // 实现委托方法
    func getData(data: Any) {
        // 处理获取到的数据
    }

    // 在需要获取数据的地方调用源ViewController的发送数据方法
    func fetchData() {
        let sourceVC = // 获取源ViewController的实例
        sourceVC.delegate = self
        sourceVC.sendData()
    }
}
  1. 闭包: 闭包是一种轻量级的传递数据的方式,它可以在一个ViewController中定义一个闭包属性,并在需要获取数据的地方调用闭包来传递数据。在目标ViewController中,我们可以通过闭包参数来接收数据。

示例代码如下:

在源ViewController中:

代码语言:swift
复制
class SourceViewController: UIViewController {
    var dataClosure: ((Any) -> Void)?

    // 在某个事件触发时调用闭包传递数据
    func sendData() {
        let data = // 获取数据的逻辑
        dataClosure?(data)
    }
}

在目标ViewController中:

代码语言:swift
复制
class TargetViewController: UIViewController {
    // 在需要获取数据的地方设置闭包,并处理获取到的数据
    func fetchData() {
        let sourceVC = // 获取源ViewController的实例
        sourceVC.dataClosure = { data in
            // 处理获取到的数据
        }
        sourceVC.sendData()
    }
}

以上是从一个ViewController获取数据的两种常见方式,根据具体的需求和场景选择合适的方式来实现数据的传递。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • iOS应用架构谈 view层的组织和调用方案 pragma mark - life cyclepragma mark - life cyclepragma mark - getters and set

    前言 《iOS应用架构谈 开篇》出来之后,很多人来催我赶紧出第二篇。这一篇文章出得相当艰难,因为公司里的破事儿特别多,我自己又有点私事儿,以至于能用来写博客的时间不够充分。 现在好啦,第二篇出来了。 当我们开始设计View层的架构时,往往是这个App还没有开始开发,或者这个App已经发过几个版本了,然后此时需要做非常彻底的重构。 一般也就是这两种时机会去做View层架构,基于这个时机的特殊性,我们在这时候必须清楚认识到:View层的架构一旦实现或定型,在App发版后可修改的余地就已经非常之小了。因为它跟业务

    08

    Mac OSX 开发基础控件学习之 NSOutlineView

    在开发基于osx的Application的过程中,当我们需要显示一组列表结构的数据时,比较容易想到的控件是NSTableView;但如果你显示的数据有层级结构时,NSTableView就会面临一个问题:因为在osx中,NSTableView没有分组功能( sections) 因为在cocoa 中提供了另一个控件供满足我们的需求NSOutlineView它是继承自NSTableView的子类,是Mac OSX Application常用的控件之一,与NSTableView相似,NSOutlineView也使用行和列来显示内容,但所不同的是NSOutlineView使用具有层级的数据结构 下面我们通过一个示例(你也可以从这里Demo下载工程,但更推荐自己一步一步创建工程并实现功能)来简单学习一下怎样使用NSOutlineView显示带有层级结构的数据内容

    02
    领券