gpt4 book ai didi

ios - 将 UISlider 值从一个 ViewController 传递到另一个 ViewController

转载 作者:行者123 更新时间:2023-11-30 11:11:36 25 4
gpt4 key购买 nike

我正在开发 AVSpeechSynthesizer,我正在尝试将 slider 上设置的音量、音高和速率值从设置 View Controller 传递到主视图 Controller 。在设置 View Controller 中,从默认值开始,

var volume : Float = 1.0
var pitch: Float = 1.0
var rate: Float = AVSpeechUtteranceDefaultSpeechRate

和 slider 操作,

@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
}

在主视图 Controller 中,

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)
}
}

但仅使用音量、音高和速率的默认值,而不是通过更改在 slider 上设置的值。

最佳答案

我编写了一些与您的代码执行相同操作的代码。

在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 的值可能与您更改的值不同。

关于ios - 将 UISlider 值从一个 ViewController 传递到另一个 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52137558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com