我有一个UITableView
包含用户添加的动态单元格。每个单元格都有一个UILabel
和一个UISwitch
。开关的默认状态为ON。每当用户添加时,我都会将这些值保存在CoreData
模型中(UILabel
为字符串& UISwitch
为Bool
)。
我想在用户切换开关时更新/存储CoreData模型中同一单元格中对应于label值的开关状态。我已经为行中的每个开关添加了标签(switch.tag = indexPath.row),并且可以使用我的cellChanged函数中的sender.tag来访问它。但我无法获取已切换开关的那一行的标签。如果我能以某种方式获取与切换的切换对应的标签的值,那么我可以运行for循环以在CoreData
模型中查找该标签值,然后设置UISwitch
的状态。由于我使用的是Swift
语言,如果您能使用相同的语言解释代码,我将不胜感激。
答案 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作为单元格的委托。并覆盖此方法。
因此,每次开关改变时,视图控制器都将获得单元格引用,切换值和文本标签。然后,您可以在此处执行核心数据更新操作。