Я использую приложение настроек iPad, чтобы изменить некоторые звуки кнопок и фоновое изображение. Все работает хорошо, и настройки сохраняются от одного запуска приложения к другому в симуляторе. Теперь я реализовал тумблер для включения или выключения наборов звуков. Когда приложение запускается, в каком бы состоянии ни был переключатель, он работает; например если переключатель «Звуки предупреждений» выключен, звуки предупреждений тихие, и если я переведу его в положение ВКЛ, звуки начнут работать. Однако, если я снова выключу переключатель, звуки все еще будут работать. Однако, если состояние включено при запуске приложения, звуки работают, но не будут отключены, когда переключатель установлен в положение ВЫКЛ.
Обратите внимание, что это отличается от настроек, которые не вступят в силу до второго раунда настроек. Это была предыдущая проблема, которую я решил (благодаря переполнению стека), используя:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
[[NSUserDefaults standardUserDefaults] synchronize];
}
У меня есть методы с именем:
- (void)defaultsChanged:(NSNotification *)NSUserDefaultsDidChangeNotification
(который вызывается при отправке уведомления)
а также
-(void)setValuesFromPreferences
(который вызывается в ViewDidLoad)
Логика выглядит так в обоих:
// Set alert sounds from preferences
NSString *alertSoundPreference = [userDefaults stringForKey:kAlertSound];
BOOL alertSoundEnabled = [userDefaults boolForKey:kAlertSoundEnabled];
if (alertSoundEnabled)
{
// Create the URLs for the alert audio files
// Store the alert sound URLs as a CFURLRef instances
// Create system sound objects representing the alert sound files
}
У меня нет другого, потому что я предполагаю, что никакие звуковые ресурсы не будут указаны, если для alertSoundEnabled будет НЕТ.
Я искал объяснения и руководства, в которых упоминается эта проблема, но пока не нашел, поэтому спрашиваю здесь. Спасибо за любые предложения.