如何在Swift中的CoreData模型中保存动态创建的UISwitch的更改状态?
问题描述:
我有一个UITableView
包含用户添加的动态单元格。每个单元有一个UILabel
和一个UISwitch
。开关的默认状态为ON。每当用户添加它时,我将这些值保存在CoreData
模型(UILabel
,字符串为& UISwitch
,作为Bool
)。 每当用户切换交换机时,我想更新/存储CoreData模型中相同单元中的标签值对应的交换机的状态。我已经将标记(switch.tag = indexPath.row)添加到行中的每个开关,并且可以通过在我的cellChanged函数中使用sender.tag来访问它。但是我无法获取切换开关所在行的标签。如果我能以某种方式获取与切换开关相对应的标签值,则可以运行for循环在CoreData
模型中查找该标签值,然后设置UISwitch
的状态。由于我使用的是Swift
语言,如果您可以使用相同的语言解释代码,我将不胜感激。如何在Swift中的CoreData模型中保存动态创建的UISwitch的更改状态?
答
这为我工作:
func switchTapped(sender:UISwitch) {
let switchPosition = sender.convertPoint(CGPointZero, toView: self.tableView)
let indexPath = self.tableView.indexPathForRowAtPoint(switchPosition)
}
答
更好的模式可以在单元中创建一个协议。像
@protocol MyCellDelegate{
func cellSwitchChanged(forCell: MyCell, toValue: Bool, withLabel: String?)
}
class MyCell: UITableVeiwCell{
weak veer delegate: MyCellDelegate
.
.
.
@IBaction handleSwitchChanged(sender: UISwitch){
self.delegate?.cellSwitchChanged(forCell: self, toValue: sender.value, withLabel: self.lblName.text)
}
}
而在你的单元格为行索引路径,分配你的VC委托的单元格。并重写此方法。
因此,每当开关改变时,视图控制器将获得单元格引用,开关值和文本标签。那么您可以在这里进行核心数据更新操作。
为什么你需要存储在CoreData的标签,做这些标签改变? –
这些标签存储用户选择的时间值。 –
够公平的。我可以假设你存储'NSDate's? –