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

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

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

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

391閲覧

swift Sliderで入力した値(音量)を値渡ししてアラームが鳴った時の音量として使いたい。

globalplus

総合スコア119

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2018/09/25 11:46

swiftの値渡しの実装を試みている初心者です。

FirstSettingViewControllerにあるUISliderで設定した値(音量)をSecondViewControllerに設置してあるアラームが鳴った時の音量として実装したいです。自分なりの値渡しのコードを書いてみましたがうまくいきません。
ご教授頂ければ嬉しいです。よろしくお願いします。

FirstSettingViewController

1import UIKit 2import AVFoundation 3 4class FirstSettingViewController: UIViewController { 5 6 var audioPlayer: AVAudioPlayer! 7 @IBOutlet weak var volumeSlider: UISlider! 8 @IBOutlet weak var volumeLabel: UILabel! 9 @IBAction func volumeChange(_ sender: UISlider) 10 { 11 let value = round(sender.value * 100)/1 12 volumeSlider.value = sender.value 13 volumeLabel.text = "(value)" 14 audioPlayer.volume = volumeSlider.value 15 audioPlayer.play() 16 } 17 18 override func prepare(for segue: UIStoryboardSegue, sender: Any?) 19 { 20 if segue.identifier == "setVolume1" 21 { 22 let SecondViewController = segue.destination as! SecondViewController 23 SecondViewController.audioPlayer = FirstSettingViewController.volumeChnage 24//ここにCannot assign value of type '(FirstSettingViewController) -> (UISlider) -> ()' to type 'AVAudioPlayer!'というエラーが出ています。 25 } 26 } 27 28 override func viewDidLoad() { 29 super.viewDidLoad() 30 31 if let url=Bundle.main.url(forResource:"Alarm",withExtension:".mp3" ) 32 { 33 34 do { 35 audioPlayer = try AVAudioPlayer(contentsOf:url) 36 audioPlayer?.play(atTime:1 * 10) 37 38 }catch{ 39 audioPlayer = nil 40 } 41 }else{ 42 fatalError("Url is nil") 43 } 44 45 }

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

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

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

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

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

guest

回答1

0

ベストアンサー

音量受け渡し用の変数を作成

swift

1//SecondViewController 2var volume: Float = 0

音量を渡す

swift

1//FirstSettingViewController 2SecondViewController.volume = volumeSlider.value

再生時に反映させる

swift

1//SecondViewController 2audioPlayer.volume = self.volume 3audioPlayer.play()

独り言

volumeを作成せずに、直接audioPlayer.volumeに入れてもいいかも知れないけど‥。

投稿2018/09/28 04:35

fuzzball

総合スコア16731

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

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

globalplus

2018/10/10 07:00

返信遅くなりすみません ご回答ありがとうございます。 上記のコードを実装するとUISliderを触った瞬間にSecondViewControllerに画面遷移してしまいますその中での問題が 1 UISliderを調節する暇なく勝ってに遷移してしまう 2 遷移してしまうせいでtabが表示されなくなってしまう (FirstSettingViewControllerもSecondViewControllerもLine(アプリ)みたいに全てtab操作で切り替えられるようにしているため。) 1の問題につきましてはprepare文を使っているからだと思いますが何か良い策はないでしょうか?
fuzzball

2018/10/10 08:05

>>上記のコードを実装するとUISliderを触った瞬間にSecondViewControllerに画面遷移してしまいます 質問内のコードにも、私のコードにも、遷移するコードは一切含まれていません。 (prepare(for:sender:)は遷移動作が始まったあとに呼ばれるメソッドです)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問