我在单元格中有一些UITableView
的Firebase结果。所有细胞都有一个白色视图。我添加了滑动动作“venduto”,我希望当我点击此按钮时,视图的颜色变为绿色。它完全正常工作,但是如果我更改viewController并返回它,视图的颜色将返回白色。
如何保存更改?
请使用Swift。
答案 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设置为绿色。