簡體   English   中英

將UISlider值從一個ViewController傳遞到另一個

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM