更改视图颜色后的TableView保存

时间:2016-12-23 14:06:12

标签: ios swift uitableview

我在单元格中有一些UITableView的Firebase结果。所有细胞都有一个白色视图。我添加了滑动动作“venduto”,我希望当我点击此按钮时,视图的颜色变为绿色。它完全正常工作,但是如果我更改viewController并返回它,视图的颜色将返回白色。

如何保存更改?

请使用Swift。

4 个答案:

答案 0 :(得分:2)

当您使用firebase数据填充数组/字典(无论您使用什么来填充tableview)时,只需再添加一个字段并保持其状态单击按钮以更改单元格的颜色。 例如: 您已将新字段添加为键值对

{
   isvendutoClicked : true
}
按钮点击事件

然后更改此键的状态

if isvendutoClicked {

   isvendutoClicked = false

}else{

 isvendutoClicked = true

}

之后检查" cellForRow"中的这个新字段的状态。表视图的方法和相应地设置视图的颜色。 例如:

if isvendutoClicked {

   yourCellView.backgroundColour = Green Colour

}else{

   yourCellView.backgroundColour = White Colour

}

因此无论何时加载表格,无论是从同一屏幕还是从其他屏幕导航回来,它都会根据您添加的额外字段的状态显示单元格的颜色。

希望这会对你有所帮助:)。

答案 1 :(得分:0)

如果只有UI功能,您应该在ViewController中存储单元格(项目)的状态。如果应在应用程序运行之间存储项目状态,则需要更新Firebase中的数据。

class SomeVC: UIViewController {
    var states = [IndexPath:Bool]()

    func toggleStateForItem(indexPath: IndexPath) {
        var newValue = true
        if let previous = states[indexPath] {
            newValue = !previous
        }
        states[indexPath] = newValue
    }
}

如果需要,您可以将Bool更改为Color

答案 2 :(得分:0)

您需要更新数据模型。您将拥有一个颜色值。每次更改单元格的颜色时都会更新此值。

您可以运行以下内容:

dbRef.child("yourKey").child("yourKey").updateChildValues(["yourKey": yourValue])

我不知道您当前的数据模型,但这应该有用。

答案 3 :(得分:0)

我认为您可以将属性(例如isSelected)绑定到模型,该模型是呈现UI的数据。当选择或取消选择按钮时,将按钮的selected属性设置为模型的isSelected属性,然后调用reloadData。然后将数据保存到plist或prefernce,然后下次只检查plist文件(如果不存在),加载未更改的数据,否则加载plist数据。然后你需要在单元格的实现中重写模型getter方法,根据isSelected,如果值为yes,则将背景颜色设置为白色,否则将backgroundColor设置为绿色。