SWIFTUI List 希望在列表中有切换。无法将“MyModel”类型的值转换为预期的参数类型“Binding<MyModel>”

Posted

技术标签:

【中文标题】SWIFTUI List 希望在列表中有切换。无法将“MyModel”类型的值转换为预期的参数类型“Binding<MyModel>”【英文标题】:SWIFTUI List want to have toggle in a list. Cannot convert value of type 'MyModel' to expected argument type 'Binding<MyModel>' 【发布时间】:2020-04-21 20:13:45 【问题描述】:

我只是想获得所有带有文本和切换的记录列表。不知何故,我根本不明白。我收到错误:无法将类型“MyModel”的值转换为预期的参数类型“Binding”

我怎样才能让列表中显示的布尔值作为切换并可以更改?

这是我的代码:

struct ContentView: View 

@State var myModels: [MyModel] = [
       MyModel(id: "1", name: "First Model-1-", notify: false),
       MyModel(id: "2", name: "Second Model", notify: true)
   ]

var body: some View 

    List
        ForEach(myModels, id: \.id)myModel in
            HStack
            Text(myModel.name)
            Spacer()
            ToggleView(myModel: myModel) //<-- here s the error message: Cannot convert value of type 'MyModel' to expected argument type 'Binding<MyModel>'
        
        








struct ToggleView: View 
@Binding var myModel: MyModel // <<

var body: some View 
    HStack 
        Toggle(isOn: $myModel.notify) 
            Text("Done")
        
        Text(myModel.notify ? "Complete" : "Not complete")

    


任何帮助都非常感谢!

【问题讨论】:

【参考方案1】:

您很可能只需要使用双向绑定。所以缺少一个 $:

ToggleView(myModel: $myModel)

【讨论】:

感谢您的评论,但这也不起作用。 myModel 来自“ForEach”并且没有绑定..(myModels,末尾带有“s”,具有@State 绑定)我使用 struct ToggleView 来从 bool 到 Binding,但是我想这不是正确的方法

以上是关于SWIFTUI List 希望在列表中有切换。无法将“MyModel”类型的值转换为预期的参数类型“Binding<MyModel>”的主要内容,如果未能解决你的问题,请参考以下文章

在 HStack 中有 2 个 List/ScrollView 时,NavigationView 不会折叠 - SwiftUI

在列表中切换选择 - SwiftUI

如何在 tvOS 中使 SwiftUI 列表可滚动

List 中的 ForEach 出现 SwiftUI 错误:无法使用类型为 '(@escaping () ... 的参数列表调用类型为 'List' 的初始化程序...(参见代码)

SwiftUI - 如何在列表中编辑行?

如何在swiftUI中的List中设置空列背景颜色?