我有用户抱怨我的应用程序没有声音。我发现这通常是因为静音开关打开了,而有了方便的回复工具,我通常可以告诉他们这一点…不过,这似乎是一个持续的问题,我需要解决这个问题。我找到了一种用下面的代码禁用静音开关的方法。
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
在开关上,这样项目就记住了首选项,因为这是一个简单的布尔值,所以我可以在两个开关状态下粘贴代码,其中一个状态为“false”。但是,这个开关在另一个视图控制器上,我需要我的代码在初始视图控制器上,否则代码不起作用。直到用户进入首选项进行更改。我需要一些帮助来设置一个开关,可以打开/关闭这段代码,并让用户默认记住它。