我正在使用Custom TableViewCell构建一个简单的TableViewController。
在这个TableViewCell中我有
1)ImageView 2)标签 3)开关按钮
现在举例来说,当我尝试启动应用程序5行时。 如果用户单击其中一个行项目的切换按钮,我想启动一个方法。
所以我建立了这个方法:
@IBAction func attivaLuci(sender: UISwitch) {
if sender.on {
//ATTIVO LA LUCE CORRISPONDENTE
}else{
//DISATTIVO LA LUCE CORRISPONDENTE
}
}
现在如何获取单元格的rowIndex?
答案 0 :(得分:1)
使用此
curl
或只是
let row = sender.convert(sender.frame.origin, to: self.tableview)
let indexPath = self.tableview.indexPathForRow(at: row)
答案 1 :(得分:0)
就像你可以在创建时设置buttonA.tag = 101和buttonB.tag = 102。当你想要区分它们时,只需写:if(button.tag == 101)。
答案 2 :(得分:0)
在Swift中,一个简单而聪明的方法就是回调闭包。
在自定义单元格中声明变量callback
var callback : ((Bool) -> ())?
并调用IBAction
@IBAction func attivaLuci(sender: UISwitch) {
callback?(sender.isOn)
}
在cellForRowAt
中的表格视图控制器中设置回调
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell...
...
cell.callback = { isOn in
// execute code, the index path is captured.
// isOn is the current state of the switch
}
...
}
当调用自定义单元格中的IBAction
时,将执行回调的闭包。