【发布时间】:2021-12-30 05:58:18
【问题描述】:
我有一个视图“CancelRow”,其中 isSelected 的值正在改变
struct CancelRow: View {
@Binding var isSelected: Bool
init(isSelected: Binding<Bool>) {
self._isSelected = isSelected
}
@ViewBuilder var body: some View {
HStack {
Text(verbatim: "Hello, \(isSelected)")
}
CustomCheckbox(checkboxType: .withTrailingLabel,
checkboxTitle: "", isActive: $canCancel, isSelected: $isSelected)
}
.onTapGesture {
isSelected.toggle()
}
}
我有另一个视图,我想根据“CancelRow”中的“isSelected”显示按钮是否处于活动状态
// 另一个视图
CancelRow(isSelected: .constant(false))
Spacer()
SubmitButtonView(buttonTitle: title, buttonCallBack: {
goToOtherScreen()
}, isActive: isSelected ) // how to access this variable from "CancelRow"
【问题讨论】:
-
状态应该由父视图拥有并传递给子视图——你不应该尝试进入子视图或兄弟视图的状态
-
@jnpdx 你能帮我写代码吗..我尝试了没有init方法的示例解决方案..但不确定如何使用init方法访问“CancelRow”中的变量
-
“isSelected”值是 false 或 true.. 仅在 CancelRow 中才知道我如何从父级传递它..plz 建议
-
在父视图上使用@State并将其传递给子视图,而不是使用.constant,它无论如何都无法更新
-
请不要将same问题发两次