【发布时间】:2019-06-03 15:10:23
【问题描述】:
我正在尝试将数据从第一个 VC 传递到第二个 VC 我尝试过使用委托,但它从来没有工作过(没有显示所需的响应)所以我也尝试了回调,它现在工作了所以我粘贴了两行代码所以欢迎任何帮助
代表:
protocol RatingDelegate: class {
func didLoadRating(ratings : [RatingModel])
}
数据将从其传递的视图控制器
ViewController A:
var delegate : RatingDelegate?
func showRatings(ratings: [RatingModel]) {
if delegate != nil {
delegate?.didLoadRating(ratings: ratings)
}
}
委托值应该打印在哪里
评级VC:
extension RatingVC: RatingDelegate {
func didLoadRating(ratings: [RatingModel]) {
log(ratings)
}
}
回调版本
获取数据的视图控制器
var ratingsCallBack: (() -> ([RatingModel]))?
要从中传递值的视图控制器
func showRatings(ratings: [RatingModel]) {
let ratingVC = RatingVC()
ratingVC.ratingsCallBack!() = {[unowned self] in
return ratings
}
}
这怎么会引发回应说
表达式不可赋值:函数调用返回不可变值
【问题讨论】:
-
“我尝试过使用委托,但它从来没有用过(没有显示所需的响应)”:您至少通过了
delegate != nil测试吗?设置好了吗? -
您永远不会为
delegate属性赋值。 -
仅供参考 -
if delegate != nil检查是不必要的。 -
@rmaddy 我该怎么做?
-
要修复错误删除括号(和感叹号)
ratingVC.ratingsCallBack = { ... }和RatingVC()很可能不是您期望的实例。
标签: ios swift callback delegates