gpt4 book ai didi

binding - SwiftUI @Binding 更新不会刷新 View

转载 作者:行者123 更新时间:2023-12-04 11:10:10 25 4
gpt4 key购买 nike

我觉得我缺少一些非常基本的东西,但是当单击按钮时,这个示例 SwiftUI 代码不会修改 View (尽管绑定(bind)更新)

Tutorials我读过建议这是使用绑定(bind)的正确方法, View 应该自动刷新

import SwiftUI

struct ContentView: View {
@Binding var isSelected: Bool

var body: some View {
Button(action: {
self.isSelected.toggle()
}) {
Text(isSelected ? "Selected" : "Not Selected")
}
}
}

struct ContentView_Previews: PreviewProvider {
@State static var selected: Bool = false

static var previews: some View {
ContentView(isSelected: $selected)
}
}

最佳答案

你没有误解任何东西。使用@Binding 的 View 将在底层@State 更改时更新,但@State 必须在 View 层次结构中定义。 (否则你可以绑定(bind)到发布者)
下面,我将 ContentView 的名称更改为 OriginalContentView,然后在包含原始内容 View 的新 ContentView 中定义了 @State。

import SwiftUI

struct OriginalContentView: View {
@Binding var isSelected: Bool

var body: some View {
Button(action: {
self.isSelected.toggle()
}) {
Text(isSelected ? "Selected" : "Not Selected")
}
}
}

struct ContentView: View {
@State private var selected = false

var body: some View {
OriginalContentView(isSelected: $selected)
}
}



struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}

关于binding - SwiftUI @Binding 更新不会刷新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59299260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com