タブレット用プログラムの書き止め

android OS & iPadOS の記録。

【Swift P4.5.1】SideBar

2024-11-05 19:49:07 | Swift iPadOS用

サイドバーと広域変数の組み合わせの基本動作を確認する。

サイドバーにはListを利用するのだが今回はボタンで手抜き。
普通はパスをやり取りするが今後の画像編集を考えて画像データを利用している。


【MyApp.swift】

@main
struct MyApp: App {
    @StateObject var dataModel = DataModel()

    var body: some Scene {
        WindowGroup {
            ContentView()
                .environmentObject(dataModel)
        }
    }
}

【ContentView.swift】

struct ContentView: View {
    @EnvironmentObject var dataModel: DataModel
    @State private var visibility: NavigationSplitViewVisibility = .all  // 分割メニュー設定
    
    var body: some View {
        NavigationSplitView(columnVisibility: $visibility) {
            VStack{
                Button("Test") {
                    dataModel.imageManager.originalImage = UIImage(named: "Test")
                }
                Button("Test2") {
                    dataModel.imageManager.originalImage = UIImage(named: "Test2")
                }
            } 
     // } content: { これを追加すると3列になる
        } detail: {
            ImageView()
                .environmentObject(dataModel)
        }
    }
}


【ImageView.swift】

struct ImageView: View {
    @EnvironmentObject var dataModel: DataModel
    
    var body: some View {
        if let image = dataModel.imageManager.originalImage {
            Image(uiImage: image)
                .resizable()
                .scaledToFit()
        }
        else {
            Image(systemName: "doc")
            Text("No data")
        }
    }
}


【DataModel.swift】広域変数

class DataModel: ObservableObject {
    @Published var imageManager: ImageManager = ImageManager()
}


【ImageManager.swift】機能別に管理する予定

struct ImageManager {
    var originalImage: UIImage? = nil
}

 

この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 【Swift P4.5.1】広域変数に... | トップ |   

Swift iPadOS用 」カテゴリの最新記事