このままではコードが読みづらいので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
2番目の画面から、画面遷移と同時に音源(assets保存)を停止したいのですが、初期画面に戻っても音源は再生をされたままです。画面遷移は成功しています。初心者ですのでよろしくお願いします。
import SwiftUI import AVFoundation struct ContentView: View { var body: some View { ZStack { NavigationView { ZStack{ Image("imgkeikan") .resizable() .edgesIgnoringSafeArea(.all) .aspectRatio(contentMode:.fill) VStack(spacing:100) { Text("いろいろなまつり") .font(.system(size: 80)) .foregroundColor(Color.white) .padding() MaturiView() .padding() } } .navigationBarTitle(Text("はじめに"), displayMode: .inline) } .navigationViewStyle(StackNavigationViewStyle()) } } } struct MaturiView: View { var body: some View{ NavigationLink(destination: MaturiSecondView()) { Text("おまつり") .font(.largeTitle) .foregroundColor(Color.white) .frame(width: 200, height: 100) .background(.green) } } struct MaturiSecondView: View{ private let maturiSound = try! AVAudioPlayer(data: NSDataAsset(name: "ymaturi")!.data) private func playSound(){ maturiSound.stop() maturiSound.currentTime = 0.0 maturiSound.play() } var body: some View { Button(action:{ playSound() }) { Image("maturi") .renderingMode(.original) } } } } struct ContentView_Previews: PreviewProvider { static var previews: some View { ContentView() } }
あなたの回答
tips
プレビュー