从一个ViewController获取数据可以通过委托模式或者闭包来实现。
示例代码如下:
在源ViewController中:
protocol DataDelegate: class {
func getData(data: Any)
}
class SourceViewController: UIViewController {
weak var delegate: DataDelegate?
// 在某个事件触发时调用委托方法
func sendData() {
let data = // 获取数据的逻辑
delegate?.getData(data: data)
}
}
在目标ViewController中:
class TargetViewController: UIViewController, DataDelegate {
// 实现委托方法
func getData(data: Any) {
// 处理获取到的数据
}
// 在需要获取数据的地方调用源ViewController的发送数据方法
func fetchData() {
let sourceVC = // 获取源ViewController的实例
sourceVC.delegate = self
sourceVC.sendData()
}
}
示例代码如下:
在源ViewController中:
class SourceViewController: UIViewController {
var dataClosure: ((Any) -> Void)?
// 在某个事件触发时调用闭包传递数据
func sendData() {
let data = // 获取数据的逻辑
dataClosure?(data)
}
}
在目标ViewController中:
class TargetViewController: UIViewController {
// 在需要获取数据的地方设置闭包,并处理获取到的数据
func fetchData() {
let sourceVC = // 获取源ViewController的实例
sourceVC.dataClosure = { data in
// 处理获取到的数据
}
sourceVC.sendData()
}
}
以上是从一个ViewController获取数据的两种常见方式,根据具体的需求和场景选择合适的方式来实现数据的传递。
领取专属 10元无门槛券
手把手带您无忧上云