前提
Swiftで災害者の避難を支援するアプリを作っています。
その中でもOO秒後に特定の動作を行ってくれる処理を作成中にエラーが起きて調べてもなかなか治せないため質問させて頂きました。また私はアプリ開発初心者なので分からないことが多々あると思いますがご教授のほどよろしくお願いします.
実現したいこと
ボタン押したらOO秒後に特定の音声が流れる.
発生している問題・エラーメッセージ
以下のエラーメッセージにより、ビルドができません
エラーメッセージ
Argument of '#selector' cannot refer to local function 'timerUpdate(timer:)'
@objc can only be used with members of classes, @objc protocols, and concrete extensions of classes
該当のソースコード
import SwiftUI struct escape2View: View { // UI表示に必要なパラメーター @State private var bpm: Int = 60 @State private var isPlaying: Bool = false let soundPlayer = SoundPlayer() // @State var isShowingView: Bool = false // コントローラーのインスタンス private var hapticscontroller = HapticController() var timer:Timer?=nil var body: some View { VStack { Text("ERESSアプリ") .font(.largeTitle) Image("zikkenmap2") .resizable() .frame(width: 400,height: 400) Text("避難して下さい!") .font(.system(size: 40)) // 再生・停止ボタン if isPlaying == false { Button(action: { hapticscontroller.bpm = Double(self.bpm) hapticscontroller.play() isPlaying = true soundPlayer.startPlay() Timer.scheduledTimer(timeInterval: 8,target: self, selector: #selector(timerUpdate(timer:)), userInfo: nil, repeats: false)//ここでエラーが出ます @objc func timerUpdate(timer: Timer){ soundPlayer.migiData }//ここでエラーが出ます }) { Text("避難開始") .font(.system(size: 30)) } } else { Button(action: { hapticscontroller.stop() isPlaying = false soundPlayer.finishPlay() }) { Text("避難終了") .font(.system(size: 30)) } } } } } struct escape2View_Previews: PreviewProvider { static var previews: some View { escape2View() } }
使用言語
SwiftUI
試したこと
エラーの吐いている文を13行目に移動させましたがエラーが出ました
あなたの回答
tips
プレビュー