SwiftUIで監視可能なオブジェクトを使用してビューを切り替える

エボルガード

SwiftUIで監視可能なオブジェクトを使用してビューを切り替えようと練習していますが、コードが機能していません。@Stateでこれを実行できることはわかっていますが、これを監視可能なオブジェクトで機能させたいと思います。コンテンツビューで画像をクリックしても、画像は変わりません。誰かが私を助けることができますか?

ContentView.swift

import SwiftUI

struct ContentView: View {

    @ObservedObject var viewRouter: ViewRouter


    var body: some View {

        VStack {

            Button(action: {self.viewRouter.currentPage = "Page2"}) {
                Image(viewRouter.currentPage)
            }

            if viewRouter.currentPage == "Page1" {
                Page1(viewRouter: viewRouter)

            }else if viewRouter.currentPage == "Page2" {
                Page2(viewRouter: viewRouter)
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView(viewRouter: ViewRouter())
    }
  }

ViewRouter.swift

import Foundation
import SwiftUI
import Combine

class ViewRouter: ObservableObject {

    let objectWillChange = PassthroughSubject<ViewRouter, Never>()

   @Published var currentPage: String = "Page1"

  }

Page1.swift

import SwiftUI

struct Page1: View {

    @ObservedObject var viewRouter:ViewRouter

    var body: some View {
        VStack {
         Image("ET-LondonBridge")
        }
    }
}

struct Page1_Previews: PreviewProvider {
    static var previews: some View {
        Page1(viewRouter: ViewRouter())
    }
}

Page2.swift

import SwiftUI

struct Page2: View {

    @ObservedObject var viewRouter:ViewRouter

    var body: some View {
        VStack {
            Image("BigBen")
                .aspectRatio(contentMode: .fit)
        }
    }
}

struct Page2_Previews: PreviewProvider {
    static var previews: some View {
        Page2(viewRouter: ViewRouter())
    }
}
E.Coms

すべてを機能させるためにこの行は必要ありません。この行をコメントアウトするだけです

//let objectWillChange = PassthroughSubject<ViewRouter, Never>()

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

jsonオブジェクトを含む監視可能な配列を並べ替える方法は?

分類Dev

Swift Combine:監視可能なオブジェクトでタイマーパブリッシャーを使用する

分類Dev

SwiftUIのリストビューで識別可能なオブジェクトのセットを使用する

分類Dev

R shinyを使用してオブジェクトを(テーブルとして)切り替えます

分類Dev

typescriptを使用してオブジェクトの監視可能なリストでフィルターを使用できません

分類Dev

ビューモデルにライフサイクルオブジェクトなしでリポジトリを監視させる方法

分類Dev

角度5の監視可能なサービスでオブジェクトタイプを渡す方法は?

分類Dev

SwiftUIの監視可能なオブジェクトに保存されている非同期ロードUIImages

分類Dev

JavaエージェントとASMを使用してオブジェクトの作成を監視する方法

分類Dev

ngForと非同期パイプAngular 2で監視可能なオブジェクトの配列を使用する

分類Dev

SwiftUI不明な属性 '監視可能なオブジェクト'

分類Dev

gitを使用して異なるリポジトリ管理サービス(bitbucket、GitLab)のプロジェクトを切り替える

分類Dev

RxJava:チェーンを切断せずに条件付きでオペレーターを監視可能オブジェクトに適用する方法

分類Dev

lodashを使用してオブジェクトを値で並べ替える

分類Dev

JSONオブジェクト値を切り替える

分類Dev

Colorpickerを使用して監視可能な配列内のオブジェクトのプロパティを変更する

分類Dev

jqueryでオブジェクトのクラスを切り替える

分類Dev

セレクターを使用してキャンバス上のオブジェクトを切り替える方法は?

分類Dev

監視可能な配列からオブジェクトを取得します

分類Dev

タブリンクなしで切り替え可能なタブをブートストラップする

分類Dev

JavaScriptのブール属性を使用してオブジェクトの複雑な配列を並べ替える

分類Dev

2つの切り替え可能なビューとUISegmentedコントロールでUINavigationを使用する

分類Dev

RxJava-別の監視可能なオブジェクトを制御する

分類Dev

Symbol.observableponyfillを使用したTypeScript監視可能オブジェクト

分類Dev

Javaでオブジェクトのタイプを切り替える

分類Dev

Knockoutの監視可能なオブジェクトの名前を取得する方法はありますか?

分類Dev

ノックアウト:監視可能なオブジェクトを別の変数に複製し、監視できないようにします

分類Dev

インテントを使用してビューを切り替える(android studio)

分類Dev

SwiftUIでビューを切り替えた後、Firebaseイメージが空になりました

Related 関連記事

  1. 1

    jsonオブジェクトを含む監視可能な配列を並べ替える方法は?

  2. 2

    Swift Combine:監視可能なオブジェクトでタイマーパブリッシャーを使用する

  3. 3

    SwiftUIのリストビューで識別可能なオブジェクトのセットを使用する

  4. 4

    R shinyを使用してオブジェクトを(テーブルとして)切り替えます

  5. 5

    typescriptを使用してオブジェクトの監視可能なリストでフィルターを使用できません

  6. 6

    ビューモデルにライフサイクルオブジェクトなしでリポジトリを監視させる方法

  7. 7

    角度5の監視可能なサービスでオブジェクトタイプを渡す方法は?

  8. 8

    SwiftUIの監視可能なオブジェクトに保存されている非同期ロードUIImages

  9. 9

    JavaエージェントとASMを使用してオブジェクトの作成を監視する方法

  10. 10

    ngForと非同期パイプAngular 2で監視可能なオブジェクトの配列を使用する

  11. 11

    SwiftUI不明な属性 '監視可能なオブジェクト'

  12. 12

    gitを使用して異なるリポジトリ管理サービス(bitbucket、GitLab)のプロジェクトを切り替える

  13. 13

    RxJava:チェーンを切断せずに条件付きでオペレーターを監視可能オブジェクトに適用する方法

  14. 14

    lodashを使用してオブジェクトを値で並べ替える

  15. 15

    JSONオブジェクト値を切り替える

  16. 16

    Colorpickerを使用して監視可能な配列内のオブジェクトのプロパティを変更する

  17. 17

    jqueryでオブジェクトのクラスを切り替える

  18. 18

    セレクターを使用してキャンバス上のオブジェクトを切り替える方法は?

  19. 19

    監視可能な配列からオブジェクトを取得します

  20. 20

    タブリンクなしで切り替え可能なタブをブートストラップする

  21. 21

    JavaScriptのブール属性を使用してオブジェクトの複雑な配列を並べ替える

  22. 22

    2つの切り替え可能なビューとUISegmentedコントロールでUINavigationを使用する

  23. 23

    RxJava-別の監視可能なオブジェクトを制御する

  24. 24

    Symbol.observableponyfillを使用したTypeScript監視可能オブジェクト

  25. 25

    Javaでオブジェクトのタイプを切り替える

  26. 26

    Knockoutの監視可能なオブジェクトの名前を取得する方法はありますか?

  27. 27

    ノックアウト:監視可能なオブジェクトを別の変数に複製し、監視できないようにします

  28. 28

    インテントを使用してビューを切り替える(android studio)

  29. 29

    SwiftUIでビューを切り替えた後、Firebaseイメージが空になりました

ホットタグ

アーカイブ