有没有办法,例如逻辑否定Binding<Bool>
?例如,我有一个状态变量
@State var isDone = true
Run Code Online (Sandbox Code Playgroud)
我将其作为投标传递给不同的子视图。然后我想将它与isActive
in一起使用NavigationLink
,以便它仅在not isDone
以下情况下显示:
NavigationLink(destination: ..., isActive: ! self.$isDone ) // <- `!` means `not done`
Run Code Online (Sandbox Code Playgroud)
当然,我可以用 反转我的逻辑isDone -> isNotDone
,但在许多情况下这将是不自然的。那么有没有简单的方法来反转 bool 绑定?
如果我理解正确,您需要以下内容:
extension Binding where Value == Bool {
public func negate() -> Binding<Bool> {
return Binding<Bool>(get:{ !self.wrappedValue },
set: { self.wrappedValue = !$0})
}
}
struct TestInvertBinding: View {
@State var isDone = true
var body: some View {
NavigationView {
NavigationLink(destination: Text("Details"),
isActive: self.$isDone.negate()) {
Text("Navigate")
}
}
}
}
struct TestInvertBinding_Previews: PreviewProvider {
static var previews: some View {
TestInvertBinding()
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1222 次 |
最近记录: |