如何解决在按钮点击时隐藏/显示视图-SwiftUI
我有一个视图,它是在另一个文件中单独创建的,我想在按下按钮时有条件地显示和隐藏它。
我尝试了多种技术,例如根据布尔值更改不透明度或偏移量,但是一旦将视图放置到另一个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")
}
}
谢谢!
解决方法
您可以用不同的方式显示/隐藏视图。以下是一些可以帮助您的内容:
-
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() } } } }
除了 pawello 的回答之外,您还可以像这样隐藏它:
MyView()
.hidden($doIWantThisViewToShow)
使用这个简单的扩展
extension View {
@ViewBuilder func hidden(_ shouldHide: Bool) -> some View {
switch shouldHide {
case true: self.hidden()
case false: self
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。