如何在Swift的CoreData模型中保存动态创建的UISwitch的更改状态?

时间:2016-07-24 13:05:55

标签: ios swift uitableview core-data uiswitch

我有一个UITableView包含用户添加的动态单元格。每个单元格都有一个UILabel和一个UISwitch。开关的默认状态为ON。每当用户添加时,我都会将这些值保存在CoreData模型中(UILabel为字符串& UISwitchBool)。 我想在用户切换开关时更新/存储CoreData模型中同一单元格中对应于label值的开关状态。我已经为行中的每个开关添加了标签(switch.tag = indexPath.row),并且可以使用我的cellChanged函数中的sender.tag来访问它。但我无法获取已切换开关的那一行的标签。如果我能以某种方式获取与切换的切换对应的标签的值,那么我可以运行for循环以在CoreData模型中查找该标签值,然后设置UISwitch的状态。由于我使用的是Swift语言,如果您能使用相同的语言解释代码,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

这对我有用:

func switchTapped(sender:UISwitch) {
let switchPosition = sender.convertPoint(CGPointZero, toView: self.tableView)
let indexPath = self.tableView.indexPathForRowAtPoint(switchPosition)

}

答案 1 :(得分:0)

更好的模式可以在单元格中创建协议。

之类的东西
@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) 
}
}

在你的单元格中索引一个indexPath,指定vc作为单元格的委托。并覆盖此方法。

因此,每次开关改变时,视图控制器都将获得单元格引用,切换值和文本标签。然后,您可以在此处执行核心数据更新操作。