使用 SwiftUI,我尝试设置切换值,但它告诉我
Cannot convert value of type 'Bool?' to expected argument type 'Binding<Bool>'
我从服务器获取数据,并且可解码 json 创建我的模型获取数据成功,但是当我想更改切换时,它会出现错误。
我的代码:
struct content: View {
@ObservedObject var articles = Article()
var body: some View{
VStack{
List{
ForEach(articles.article, id: \.id){article in
NavigationLink(destination: DetailView()) {
ListContent(article: article)
}
}
}
}
}
}
struct ListContent: View {
var article: Article
var body: some View {
HStack {
VStack (alignment: .leading) {
Toggle("", isOn: self.article.isActive)
.onChange(of: self.article.isActive) { value in
print(value)
}
}
.padding(.leading,10)
Spacer(minLength: 0)
}
}
}
Run Code Online (Sandbox Code Playgroud)
我无法在代码中使用 self.article.isActive 我担心我做错了什么,或者也许我不明白 Toggle 如何与 isOn 一起工作。
欢迎任何帮助或解释!谢谢。
您需要将 Binding 变量传递给 Toggle 的“isOn”参数。我假设您的“Article”的“isActive”变量具有 Bool 类型。
Toggle(model.title, isOn: Binding<Bool>(
get: { model.isActive },
set: {
// $0 is the new Bool value of the toggle
// Your code for updating the model, or whatever
print("value: \($0)")
}
)
Run Code Online (Sandbox Code Playgroud)
模型示例,以防万一
struct ToggleModel: Hashable {
init(id: Int, title: String, isActive: Bool) {
self.id = id
self.title = title
self.isActive = isActive
}
let id: Int
let title: String
let isActive: Bool
}
Run Code Online (Sandbox Code Playgroud)
您可以在这里找到工作代码示例:https://github.com/yellow-cap/toggle-list-swiftui/blob/master/SwiftUIToggleListExample/SwiftUIToggleListExample/ContentView.swift
| 归档时间: |
|
| 查看次数: |
7257 次 |
| 最近记录: |