SwiftUIでの画面遷移2

SwiftUI

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)
        }
    }
}

のように画面サイズを指定しないといけない様です。

コメント

タイトルとURLをコピーしました