質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%

Q&A

1回答

737閲覧

SwiftUIにおける画面遷移の方法

Skynet

総合スコア0

0グッド

0クリップ

投稿2023/01/24 07:59

前提

SwiftUIで被災者の避難誘導を支援するアプリを作っています。
起動画面から違う画面に移すための画面遷移を行いたいのですか,どのように実装すればいいのか迷っています.今やっているやり方以外にも方法があればご教授願いたいです。

実現したいこと

起動画面から違う画面に移すための画面遷移を行いたい.(ViewからViewに移動する)
理想としてはボタンを押せばランダムなView画面(4種類)に遷移させたい.

発生している問題・エラーメッセージ

一つの画面(View)にしか遷移できない

該当のソースコード

SwiftUI

1import SwiftUI 2 3struct ContentView: View { 4 // UI表示に必要なパラメーター 5 @State private var bpm: Int = 60 6 @State private var isPlaying: Bool = false 7 @State var answerNumber = 0 8 let soundPlayer = SoundPlayer() 9 // @State var isShowingView: Bool = false 10 // コントローラーのインスタンス 11 private var hapticscontroller = HapticController() 12 13 14 15 var body: some View { 16 //画面遷移はここです 17 NavigationView{ 18 VStack { 19 Text("ERESSアプリ") 20 .font(.largeTitle) 21 22 Image("zikkenmap") 23 .resizable() 24 .frame(width: 300,height: 300) 25 26 Text("振動の強弱設定") 27 .font(.system(size: 20)) 28 // BPMを表示 29 Text(String(bpm)) 30 .font(.system(size: 40)) 31 32 // "+"ボタン: タップするとBPMを1増やす 33 Button(action: { 34 self.bpm += 1 35 }, label: { 36 Image(systemName: "plus.circle") 37 .resizable() 38 .scaledToFit() 39 .frame(width: 60.0, height: 40.0) 40 }) 41 .disabled(isPlaying) 42 43 Button(action: { 44 self.bpm -= 1 45 }, label: { 46 Image(systemName: "minus.circle") 47 .resizable() 48 .scaledToFit() 49 .frame(width: 60.0, height: 40.0) 50 }) 51 .disabled(isPlaying) 52 53 54 //画面遷移はここです 55 .navigationBarItems(trailing: 56 NavigationLink(destination: escape2View()){ 57 Text("避難誘導開始") 58 } 59 ) 60 } 61 } 62 } 63} 64 65struct ContentView_Previews: PreviewProvider { 66 static var previews: some View { 67 ContentView() 68 } 69} 70

試したこと

このソースコードではナビゲーション関数を使用して画面遷移を行なっています.
displaymodeでの方法も試しましたがエラーが出てしまいうまくできませんでした

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

こんばんは。

もし、ios16以上が対象であれば、navigationDestination(for:destination:)なんかを使えば期待している動作になるのではと思いました。

投稿2023/01/24 12:37

takaat

総合スコア4

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問