SwiftUIでの画面遷移備忘録2
フラグでの切り替え
Xcode Version 13.3
Swift version 5.6
親Viewのコード
import SwiftUI
struct ContentView: View {
@State var isThirdView : Bool = false
var body: some View {
VStack {
Text("元のView")
if isThirdView {
ThirdView(isThirdView: $isThirdView)
} else {
Button(action: {
isThirdView = true
}) {
Text("ThirdView")
}
}
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
子Viewのコード
import SwiftUI
struct ThirdView: View {
@Binding var isThirdView : Bool
var body: some View {
VStack {
Text("SubView")
Button(action: {
isThirdView = false
}) {
Text("閉じる")
.foregroundColor(Color.white)
}
}
.background(Color.blue)
}
}
子のViewがこれだと表示の際、部品の部分だけしか表示されないようです。
子Viewの表示を大きくするには
import SwiftUI
struct ThirdView: View {
@Binding var isThirdView : Bool
var body: some View {
GeometryReader { geometory in
VStack {
Text("SubView")
Button(action: {
isThirdView = false
}) {
Text("閉じる")
.foregroundColor(Color.white)
}
}
.frame(width: geometory.size.width,
height: geometory.size.height)
.background(Color.blue)
}
}
}
のように画面サイズを指定しないといけない様です。
コメント