我有一个视图,它是在另一个文件中单独创建的,我想在按下按钮时有条件地显示和隐藏它。
我尝试了多种技术,例如根据布尔值更改不透明度或偏移量,但是一旦将视图放置到另一个SwiftUI文件中,该方法将无效。
我的项目如下:
在ContentView.swift中的 var体内:某些视图
@State var doIWantThisViewToShow: Bool = false
MyView()
.padding()
.opacity(doIWantThisViewToShow ? 1 : 0)
在MyView.swift中
struct MyView: View {
var body: some View {
Text("Text")
}
}
谢谢!
答案 0 :(得分:2)
您可以用不同的方式显示/隐藏视图。以下是一些可以帮助您的内容:
opacity
(隐藏视图保留在视图层次结构中,即其他视图保持其位置):
struct ContentView: View {
@State var doIWantThisViewToShow: Bool = false
var body: some View {
VStack {
Button("Show/Hide MyView") {
doIWantThisViewToShow.toggle()
}
MyView()
.padding()
.opacity(doIWantThisViewToShow ? 1 : 0)
}
}
}
if-statement
(将隐藏视图从视图层次结构中删除,即其他视图位置将重新排列):
struct ContentView: View {
@State var doIWantThisViewToShow: Bool = false
var body: some View {
VStack {
Button("Show/Hide MyView") {
doIWantThisViewToShow.toggle()
}
if doIWantThisViewToShow {
MyView()
.padding()
}
}
}
}
答案 1 :(得分:1)
除了 pawello 的回答之外,您还可以像这样隐藏它:
MyView()
.hidden($doIWantThisViewToShow)
使用这个简单的扩展
extension View {
@ViewBuilder func hidden(_ shouldHide: Bool) -> some View {
switch shouldHide {
case true: self.hidden()
case false: self
}
}
}