【问题标题】:Preserving Images In an IBOutletCollection在 IBOutletCollection 中保留图像
【发布时间】:2018-01-28 22:30:59
【问题描述】:

到目前为止,这是我的代码:

@IBOutlet var Boxes: [UIImageView]!
@IBAction func Success(_ sender: Any) {
    if "" == defaults.value(forKey: "frequency") as? String{
        for box in Boxes{
            if box.image == UIImage(named:"blank.png"){
                box.image = UIImage(named:"Arm.png")
                break
            }
        }
    }
    else if "Twice" == defaults.value(forKey: "frequency") as? String{
        for box in Boxes{
            if box.image == UIImage(named:"Arm1.png"){
                box.image = UIImage(named:"Arm.png")
                break
            }
            else if box.image == UIImage(named:"blank.png"){
                box.image = UIImage(named:"Arm1.png")
                break
            }
        }
        }

}

defaults.value(forKey: frequency) 用于确定用户想要更改网格的频率。我将如何创建 UserDefaults 以在应用程序关闭时恢复网格中的图像? (双击主页并向上滑动)。 UserDefaults 甚至是正确的方法吗?我觉得为每个 UIImageView 创建一个单独的插座并通过一棵巨大的代码树为每个插座保存状态会更容易,但更麻烦。谢谢!

【问题讨论】:

    标签: ios swift xcode cocoa-touch


    【解决方案1】:

    如果您的图像存储在捆绑包中(由您手动添加并且不会更改),您可以将名称保存到用户默认值而不是保存图像。 否则我会使用数据库。有很好的框架Realm。试试吧。另外,要存储图像,最好将它们转换为数据

    【讨论】:

    • 我将它们全部(按顺序)添加到包中。该应用程序目前运行良好,但我不知道如何保存图表。
    • 您可以将一组名称存储为默认值,并使用索引来检索图像。要获取数组中对象的当前索引,请使用: for (index, box) in Boxes.enumirated() 然后您可以通过此索引获取图像名称,例如:let imageName = imagesArray[index]。但老实说,我会使用领域。将图像存储为数据并将其索引存储为数据库中的对象非常容易。
    【解决方案2】:

    我破解了这个。

    我最终循环遍历列表,如果我的条件不满足,我将一个变量添加到一个变量(从 1 开始)来索引列表。如果我更改了条件,我将变量添加到 userDefault 的末尾。如果您需要任何帮助,请添加评论。

    【讨论】:

      猜你喜欢
      • 2014-03-03
      • 1970-01-01
      • 2010-11-05
      • 2014-08-16
      • 1970-01-01
      • 1970-01-01
      • 2013-11-26
      • 1970-01-01
      • 2014-11-05
      相关资源
      最近更新 更多