Как отправить и получить значение UISlider с одного контроллера представления на другой - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь использовать NotificationCenter для отправки значений ползунка (громкости звука) другому контроллеру представления, который содержит весь аудио движок, который мне нужен.От отправителя VC я попробовал это:

@IBAction func vol1ChangedFromMixer(sender: UISlider) {
    NotificationCenter.default.post(name: Notification.Name(rawValue: "vol1FromMixer"), object: nil)
    }

А затем на VC получателя, в viewDidLoad:

//vol from mixer
    NotificationCenter.default.addObserver(self, selector: #selector(vol1FromMixer(_:)), name: Notification.Name(rawValue: "vol1FromMixer"), object: nil)

И позже на том же VC получателя:

//vol from mixer function
      @objc func vol1FromMixer() {
        _engine.setAmpGain(Double(sender.value)*2.0, ofTrack: sender.tag)
}

Ошибка при использовании неразрешенного идентификатора «отправитель» в VC получателя.Наверняка я не готов с типом значений UISlider, которые могут быть отправлены.Любое предложение?

1 Ответ

0 голосов
/ 18 мая 2018

Вам необходимо передать sender из vol1ChangedFromMixer метода.Вы можете использовать этот метод и передать sender в userInfo.Затем найдите его в vol1FromMixer

Что-то вроде

@IBAction func vol1ChangedFromMixer(sender: UISlider) {
    NotificationCenter.default.post(name: Notification.Name(rawValue: "vol1FromMixer"), object: nil, userInfo: ["slider": sender])
}

@objc func vol1FromMixer(_ notification: Notification) {
    guard let sender = notification.userInfo["slider"] as? UISlider
         else { return }
    _engine.setAmpGain(Double(sender.value)*2.0, ofTrack: sender.tag)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...