【发布时间】:2015-11-21 17:03:23
【问题描述】:
我在 UITableViewCell 的附件视图中使用了 UISwitch。
开关在被选中或取消选中时使用target-action进行通信:
switchV.addTarget(self, action: "onChangeSwitch:", forControlEvents: UIControlEvents.ValueChanged)
问题在于找出选择了哪个开关。我知道3种方法。每个人都不满意。
1.我可以use tags:
switchV.tag = indexPath.row
但是如果你有节(我也有),这很糟糕,因为我需要将它解析成两个数字的节/行格式。
2.我可以使用数据模型并将切换视图存储在单元格正在绘制的数据项上:
dataItem.switch.addTarget(self, action: "onChangeSwitch:", forControlEvents: UIControlEvents.ValueChanged)
cell.accessoryView = dataItem.switch
然后我可以通过遍历我的数据集并与发送者进行身份匹配来识别选择了哪个开关。这是很多循环,我不想将视图放入我的数据模型中。
3. 然后是this method,它使用开关的坐标来查找行。无状态,不涉及字符串解析或数据模型混淆,但坐标,rly?我可以相信它吗?
tableView.indexPathForRowAtPoint(
sender.convertPoint(CGPointZero, toView: tableView)
)
有没有更好的方法来获取被选中的 UISwitch 的 indexPath?
【问题讨论】:
标签: uitableview uiswitch accessoryview