У меня есть пользователи, которые жалуются, что в моем приложении нет звука.Я обнаружил, что это обычно происходит потому, что тихий переключатель включен, и с помощью удобного инструмента ответа я обычно могу сказать им об этом ... однако это кажется постоянной проблемой, и мне нужно это исправить.Я нашел способ отключить бесшумный переключатель с помощью следующего кода:
import UIKit
import AVKit
import AVFoundation
class InitialViewController: UIViewController {
let defaults = UserDefaults.standard
override func viewDidLoad() {
super.viewDidLoad()
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
//print("AVAudioSession Category Playback OK")
do {
try AVAudioSession.sharedInstance().setActive(true)
//print("AVAudioSession is Active")
} catch _ as NSError {
//print(error.localizedDescription)
}
} catch _ as NSError {
//print(error.localizedDescription)
}
}
}
К счастью, этот код работает, но я хочу, чтобы пользователи все еще могли контролировать, включен этот код или нет.По умолчанию я хочу, чтобы она была включена и позволяла пользователям включать или отключать эту функцию.Для моего другого контроллера представления у меня есть это:
import UIKit
import AVFoundation
class CustomTableView: UITableViewController {
let defaults = UserDefaults.standard
let OverrideSwitch2 = "OverrideSwitch2"
@IBOutlet weak var OverrideSwitch: UISwitch!
override func viewDidLoad() {
super.viewDidLoad()
if let fixFin = defaults.value(forKey: OverrideSwitch2) {
OverrideSwitch.isOn = fixFin as! Bool
}
}
@IBAction func `switch`(_ sender: UISwitch) {
defaults.set(sender.isOn, forKey: "OverrideSwitch2")
if (sender.isOn == true){
//Code to switch feature on
} else {
//Code to switch feature off
}
}
}
Я установил NSUserDefault
на коммутаторе, чтобы проект запоминал предпочтенияи, поскольку это простое логическое значение, я мог просто вставить код в оба состояния переключателя, причем одно из них было «ложным».Однако этот переключатель находится на другом контроллере представления, и мне нужно, чтобы мой код был на начальном контроллере представления, иначе код не будет работать, пока пользователь не перейдет в настройки для его изменения.Мне нужна помощь в настройке переключателя, который может включать и выключать этот код, и чтобы UserDefault запомнил его.