首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按钮的UserDefaults

按钮的UserDefaults
EN

Stack Overflow用户
提问于 2020-04-15 15:54:06
回答 1查看 39关注 0票数 0

我是新来的。我一直在努力研究更多的信息,但没有成功,希望有人能帮助我:

我正在构建一个类似于one ViewController (CLViewController)中的checkbox的应用程序,我使用的是按钮作为图像,一旦按下它们,它的显示就会变成另一个图像。(选中/未选中-- item1a/item1b)

这个应用程序还有其他ViewControllers,你可以在那里获得不同的信息,但我遇到的问题是,当我从另一个ViewControllers移动时,当我回到这个CLViewController时,CLViewController返回到它的默认值,所有这些都是未选中的。我的意图是保持选中的按钮在我离开时的状态。我知道如何使用userDefaults处理文本,但我不知道如何编写按钮及其状态的代码。

代码语言:javascript
复制
import UIKit


class CLviewControllerViewController: UIViewController {

    @IBOutlet weak var btn1: UIButton!
    @IBOutlet weak var btn2: UIButton!
    @IBOutlet weak var btn3: UIButton!




    @IBAction func btn1Action(_ sender: UIButton)
    {
        if sender.isSelected == true
        {
            btn1.setImage(UIImage (named: "item1a"), for: .normal)
            sender.isSelected = false
        }
        else
        {
            btn1.setImage(UIImage (named: "item1b"), for: .normal)
            sender.isSelected = true        
          }
EN

回答 1

Stack Overflow用户

发布于 2020-04-15 16:48:27

首先,在viewDidLoad中,我们将为每个按钮分配一个标记,btn1将具有标记0,btn2将具有标记1,btn3将具有标记2。然后,我们可以读取存储在UserDefaults中的值并设置相应的状态。请注意,我们将为key Item- tag存储它们,因此btn3将存储为Item-2。然后,我们将状态存储在您的@IBAction中,以便在您返回到这个视图控制器时可以检索到它。

代码语言:javascript
复制
@IBOutlet weak var btn1: UIButton!
@IBOutlet weak var btn2: UIButton!
@IBOutlet weak var btn3: UIButton!


override func viewDidLoad() {
    super.viewDidLoad()

    for (index, btn) in [btn1, btn2, btn3].enumerated() {
        btn?.tag = index

        let selected = UserDefaults.standard.bool(forKey: "Item-\(index)")
        btn?.isSelected = selected
    }

}

@IBAction func btn1Action(_ sender: UIButton)
{
    if sender.isSelected == true
    {
        btn1.setImage(UIImage (named: "item1a"), for: .normal)
        sender.isSelected = false
    }
    else
    {
        btn1.setImage(UIImage (named: "item1b"), for: .normal)
        sender.isSelected = true
    }
    let tag = sender.tag
    //save state
    UserDefaults.standard.set(sender.isSelected, forKey: "Item-\(tag)")
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61223893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档