Проблемы с сохранением различных setTitle с пользовательскими настройками по умолчанию для моих кнопок - PullRequest
0 голосов
/ 11 ноября 2019

Я разрабатываю ваше собственное приключенческое приложение с 2 кнопками, которые меняют свои .setTitle при каждом нажатии. Мое приложение готово - все работает как надо. Всякий раз, когда нажимается кнопка, история textview изменяется, и мои кнопки представляют новые заголовки. Единственное, что я оставил, - это найти способ сохранить самые последние заголовки, которые мне представили кнопки, когда пользователи возвращаются в приложение после его закрытия.

Использование UserDefaults.Standard помогло мне сохранить историю textview,но до сих пор я не смог найти способ сохранить изменяющиеся заголовки (.setTitle) для моих кнопок. Вот как мне удалось сохранить textview:

let defaults = UserDefaults.standard
func savePageTopText() {
    defaults.set(storyTextView.text, forKey: "topText")

}

func checkTopPageText() {
    let pageText = defaults.value(forKey: "topText") as? String
    storyTextView.text = pageText
}

Затем я добавил savePageTopText() к каждой из моих кнопок, а с checkTopPageText() до viewDidLoad.This - как заголовки для моих кнопокони закодированы, и они меняются при каждом нажатии кнопки:

let answer1a = "Turn left"
let answer1b = "Turn right"
let answer2a = "Keep driving!"
let answer2b = "Pull over!"

@IBAction func buttonPressed(_ sender: UIButton) {
    if sender.tag == 1 && storyIndex == 1 {
        storyTextView.text = story3
        topButton.setTitle(answer3a, for: .normal)
        bottomButton.setTitle(answer3b, for: .normal)                     
        savePageTopText()     
    }
}

Я надеюсь, что я достаточно ясно обо всем - делаю все возможное. Когда пользователи закрывают приложение, как я могу убедиться, что они возвращаются к тем же и самым последним названиям, представленным кнопками? Как сохранить кнопки setTitle с пользовательскими настройками по умолчанию?

1 Ответ

0 голосов
/ 11 ноября 2019

Вы делаете все правильно, например, сохранение, но при получении вы делаете ошибку. UserDefaults имеет тип для извлечения данных, например String, Int, Array и т. Д.

Итак, вот как вы можете получить сохраненные String.

func checkTopPageText() {
    storyTextView.text = defaults.string(forKey: "topText")
}

Точно так же, как вам нужно знать, какие данные сохраняются, и только тогда вы можете получить их, используя соответствующие методы.

...