首页
学习
活动
专区
工具
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获取数据的两种常见方式,根据具体的需求和场景选择合适的方式来实现数据的传递。

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

相关·内容

12分1秒

61-通过分页插件获取分页相关数据

23分17秒

41-尚硅谷-小程序-通过cookie获取视频数据

24分14秒

2. 尚硅谷_佟刚_JDBC_通过 DriverManager 获取数据库连接.wmv

24分14秒

2. 尚硅谷_佟刚_JDBC_通过 DriverManager 获取数据库连接.wmv

13分7秒

JSP编程专题-13-EL从四大域中获取数据

41分28秒

1. 尚硅谷_佟刚_JDBC_通过 Driver 接口获取数据库连接.wmv

41分28秒

1. 尚硅谷_佟刚_JDBC_通过 Driver 接口获取数据库连接.wmv

18分53秒

javaweb项目实战 09-从数据库中获取全部用户记录 学习猿地

26分35秒

Vue3.x项目全程实录 20_从接口中获取分类数据 学习猿地

6分1秒

77_尚硅谷_大数据SpringMVC_从ServletContext中获取SpringIOC容器对象的方式.avi

8分51秒

day04_Java基本语法/05-尚硅谷-Java语言基础-使用Scannner从键盘获取int型数据

8分51秒

day04_Java基本语法/05-尚硅谷-Java语言基础-使用Scannner从键盘获取int型数据

领券