【发布时间】:2020-02-13 14:06:40
【问题描述】:
我正在尝试使用闭包作为回调机制将选定的数据从子视图控制器发送到父视图控制器。在具有四个下拉菜单的 UI 中,使用了该子视图控制器。现在,在每个下拉菜单中,都会将一个结构模型类传递给它,其中包含它们各自的数据。所以现在,当将选定的数据传递回父视图时,需要使用他们尊重的结构类。
为了更深入地理解代码,我目前尝试过的代码如下:
struct Roles : Codable {
let roleId : Int?
let roleName, roleContent : String?
private enum Codingkeys: String, CodingKey
{
case roleId = "roleId"
case roleName = "roleName"
case roleContent = "roleContent"
}
}
// ChildViewController
var myRoless = [Roles]()
var completionHandler:((String) -> Int)?
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let result = completionHandler?(myRoless[indexPath.row])
print("completionHandler returns... \(String(describing: result))")
removeAnimate()
}
// 父视图控制器
childEditTaskViewController?.completionHandler = { text in
// print("text = \(text)")
strSelectedValue = text
}
错误:
Cannot convert value of type 'Roles' to expected argument type 'String
以上是我目前尝试过的
【问题讨论】:
-
看起来你正在传递一个角色,你的意思是 'myRoless[indexPath.row].角色名'?
-
@WelcomeNewUsers 想在索引处返回整个项目,索引处有字典
标签: ios swift xcode generics codable