[英]Passing values from one ViewController to another in Objective-C
[英]Passing UISlider values from one ViewController to another
我正在使用AVSpeechSynthesizer,正在嘗試將滑塊上的音量,音高和速率設置值從設置視圖控制器傳遞到主視圖控制器。 在設置View Controller中,從默認值開始,
var volume : Float = 1.0
var pitch: Float = 1.0
var rate: Float = AVSpeechUtteranceDefaultSpeechRate
還有滑桿動作
@IBAction func volumeSliderDidSlide(_ sender: UISlider) {
volume = sender.value
testLable.text = String(volume)
}
@IBAction func pitchSliderDidSlide(_ sender: UISlider) {
pitch = sender.value
}
@IBAction func rateSliderDidSlide(_ sender: UISlider) {
rate = sender.value
}
在主視圖控制器中
var ttsSettingsViewController: TTSSettingsViewController!
@IBOutlet weak var textBox: UITextView!
var speechSynthesizer = AVSpeechSynthesizer()
var speechUtterence : AVSpeechUtterance = AVSpeechUtterance(string: "")
override func viewDidLoad() {
super.viewDidLoad()
let storyBoard: UIStoryboard = UIStoryboard(name: "TTS", bundle: nil)
ttsSettingsViewController = storyBoard.instantiateViewController(withIdentifier: "TTSSettingsViewController") as! TTSSettingsViewController
}
@IBAction func didTapSpeech(_ sender: Any) {
if let textBoxText = textBox.text{
speechUtterence = AVSpeechUtterance(string: textBoxText)
speechUtterence.volume = ttsSettingsViewController.volume
speechUtterence.pitchMultiplier = ttsSettingsViewController.pitch
speechUtterence.rate = ttsSettingsViewController.rate
speechSynthesizer.speak(speechUtterence)
}
}
但是僅使用音量,音高和速率的默認值,而不使用通過更改在滑塊上設置的默認值。
我編寫了一些與您的代碼具有相同功能的代碼。
在SettingViewController中
class SettingViewController: UIViewController {
var volume: Float = 0.0
@IBAction func slider(_ sender: UISlider) {
volume = sender.value
}
@IBAction func closeButton(_ sender: Any) {
dismiss(animated: true)
}
}
和ViewController.swift
class ViewController: UIViewController {
var settingVC: SettingViewController!
override func viewDidLoad() {
super.viewDidLoad()
settingVC = UIStoryboard(name: "Main", bundle: nil)
.instantiateViewController(withIdentifier: "SettingViewController") as! SettingViewController
}
@IBAction func printSettingValue(_ sender: Any) {
// Use setting view controller's value
print(settingVC.volume)
}
@IBAction func showSettingView(_ sender: Any) {
show(settingVC, sender: nil)
}
}
因此,這是我的代碼,並且效果很好。
有我的假設。您使用的TTSSettingsViewController的值可能是您更改的不同值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.