LoginSignup
hajimeapp
@hajimeapp

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

【SwiftUI】Canvas(プレビュー画面)で表示するページを固定したい

Q&AClosed

解決したいこと

1つの画面で、ボタンを押すたびにページが切り替わり、合計10ページ変わるようにしています。ただ、10ページ目の修正は10ページ目のプレビューを見ながら行いたいのに、コードを修正するたびにプレビューが自動で再描画されて1ページ目が表示されてしまいます。

そうなると、またプレビュー内で10ページ目までボタンを押して画面を確認しなければなりません。

これを、常に10ページ目の画面が表示されるようにプレビューの画面をページで固定したいのですが、そういった設定は可能なのでしょうか?

0

1Answer

1つの画面で、ボタンを押すたびにページが切り替わり、合計10ページ変わるようにしています

これの実装方法によるかと思いますが、ContentView_Previews内で直接10ページ目を表示することは出来のでしょうか?
頁制御をどのように行われているのか分からないので、この程度しか回答できません。
任意のページに直接遷移できる設計になっていないと無理でしょう。

0Like

Comments

  1. @hajimeapp

    Questioner

    @nak435 さんコメントいただきありがとうございます!!

    任意のページに直接遷移できる設計になっていないと無理でしょう。

    任意のページに直接遷移することはできず、10回ボタンを押さないと10ページ目には遷移しないようになっています!

    ※ちなみにこちら、前回nak435さんにご回答いただいたクイズアプリの画面についてのご質問になります!10問目を回答し終わった後の、正解数結果画面を編集しているのですが、毎回10問回答し終えないと結果ページのデザインを確認することができず、もっと効率良く確認する方法はXcode上で設定できないかと思いご質問させていただきました!

    根本的な話にはなりますが、そもそも1ファイルにおけるページ数を減らした方がいいですよね...!💦

  2. ※ちなみにこちら、前回nak435さんにご回答いただいたクイズアプリの画面についてのご質問になります

    あのコードであれば、変数を制御すれば直接「正解数結果画面」を見ることはできます。
    最新のJoumonView.swiftを貼ってもらえれば見てみます。


    • JoumonViewに次のinitを追加する
    struct JoumonView: View {
    :   :   :
        init(directScore: Int = 0) {
            if directScore > 0 {
                _score = State(initialValue: directScore)
                //_isShowResult = State(initialValue: true) 
                //↑コメントのままだと 10問目を表示
                //↑コメントを外すと「正解数結果画面」を表示
                _questionNumber = State(initialValue: 9)
            }
        }
    :   :    :
    }
    
    • JoumonView_Previewsで生成するJoumonViewに引数を指定する
    struct JoumonView_Previews: PreviewProvider {
        static var previews: some View {
            JoumonView(directScore: 5) //5:仮定する正解数
        }
    }
    
    • もし、親画面からのプレビューでもそうしたい場合は、親画面で生成するJoumonViewに引数を指定する
    :   :   :
    switch index {
        case 0: JoumonView(directScore: 5) //仮定する正解数
        case 1: YayoiView()
        case 2: KofunView()
        case 3: AsukaView()
        case 4: NaraView()
        case 5: HeianView()
        case 6: KamakuraView()
        case 7: MuromachiView()
        case 8: AduchiMomoyamaView()
        case 9: EdoView()
        default: EmptyView()
    }
    :   :   :
    

    JoumonView()の様に、引数を省略すると普通に1問目から始まります。

  3. @hajimeapp

    Questioner

    @nak435 さんご返信ありがとうございます!

    なるほど!たしかにテストのときだけ実装を変更すればいいんですね!

    ありがとうございます!こちら実践させていただきます!🔥

Your answer might help someone💌