В дополнительном контроллере представления в моем приложении у меня есть таблица значков для изменения, например, приложение Reddit Apollo .
В моем главном контроллере вида я использую пользовательские настройки по умолчанию, чтобы сохранить текст двух меток и цвет фона представления.Без какого-либо сохранения пользовательских настроек по умолчанию, при нажатии на одну из строк таблицы я могу свободно изменять значок приложения с помощью следующих строк:
let appIconService = AppIconService()
appIconService.changeAppIcon(to: .goldAppIcon)
Для сохранения значений по умолчанию для пользователя :Когда кнопка нажата на экране, она случайным образом выбирает строку из массива и устанавливает один из двух label.text, затем случайным образом выбирает UIColor и устанавливает view.backgroundcolor.Затем я сохраняю их с помощью функции «saveLastQuote ()», а затем вызываю функцию «checkForLastQuote ()» в viewDidLoad () для получения значений по умолчанию пользователя:
let defaults = UserDefaults.standard
func saveLastQuote() {
defaults.set(randomText.text!, forKey: Keys.savedQuote)
defaults.set(nameText.text!, forKey: Keys.savedName)
defaults.set(self.view.backgroundColor, forKey: Keys.savedBackgroundColor)
}
func checkForLastQuote() {
let lastQuote = defaults.value(forKey: Keys.savedQuote) as? String ?? "\"Quote\""
let lastName = defaults.value(forKey: Keys.savedName) as? String ?? ""
let lastBackgroundColor = defaults.color(forKey: Keys.savedBackgroundColor)
randomText.text = lastQuote
nameText.text = lastName
self.view.backgroundColor = lastBackgroundColor ?? Colors.black
}
По какой-то причине, когда у меня есть сохранениекод пользователя по умолчанию в главном ViewController.swift, когда я нажимаю на строку, чтобы изменить значок на другом экране, я получаю это диалоговое окно (скриншот ниже) , указывающее мне, что оно изменилось, нокогда я закрываю приложение и открываю его снова, оно всегда остается со своим исходным значком приложения (черно-белая версия золотого на скриншоте)
РЕДАКТИРОВАТЬ : Когда я собираю и запускаю приложение на своем устройстве (именно там я и делаю все тесты для приложения), значок приложения ИЗМЕНЯЕТСЯ на новый, который я щелкнул в представлении таблицы, а затем не меняется до тех пор, пока я не соберуи запустите снова.
Нужно ли сохранять иконку, которую я меняю сейчас, так как я использую настройки по умолчанию для добавления других элементов?Или, возможно, получить измененный значок, который он обычно сохраняет сам по себе от пользовательских настроек по умолчанию, и установить его?Я не знаю, почему у меня такое поведение.Довольно запутался по этому поводу.