使用我的按钮的用户默认值保存不同的 setTitle 时遇到问题

Posted

技术标签:

【中文标题】使用我的按钮的用户默认值保存不同的 setTitle 时遇到问题【英文标题】:Trouble saving different setTitle with user defaults for my buttons 【发布时间】:2019-11-11 03:53:42 【问题描述】:

我正在开发一个构建你自己的冒险应用程序,它有 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】:

您正在正确执行所有操作,例如保存,但在获取时您正在执行错误。 UserDefaults 具有获取数据的类型,例如 StringIntArray 等。

这里是获取保存的String的方法。

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

就像您需要知道正在保存哪些数据,然后只有您可以使用适当的方法获取。

【讨论】:

谢谢你,Sohil- 但你能告诉我如何获取我的按钮的 标题吗? 我的困难在于保存和获取 .setTitle 非常感谢!

以上是关于使用我的按钮的用户默认值保存不同的 setTitle 时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

在我的按钮上获得关于“没有成员'setTitle'”的错误

如何将 JSON 令牌保存到用户默认值,然后在不同的视图中使用它?斯威夫特 4

在应用加载时保存为用户默认值

保存/加载 UIColor 用户选择默认值

使用 swift 将数组保存和检索到用户默认值

如何使用 didSet 更新 UIButton 的 .setTitle?