У меня возникли проблемы с внедрением UISwitch в UITableViewCell. Мой tableViewCell:, идентифицирующий UISwitch в UITableViewCell
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cell")
cell.textLabel?.text = "Hello Magic Switch buyers!"
cell.textLabel?.textColor = UIColor.whiteColor()
cell.backgroundColor = UIColor.clearColor()
lightSwitch = UISwitch(frame: CGRectZero) as UISwitch
lightSwitch.on = false
lightSwitch.addTarget(self, action: "switchTriggered", forControlEvents: .ValueChanged);
cell.accessoryView = lightSwitch
return cell
}
Это создает переключатель, все идет хорошо, до того момента, функция не будет вызвана .. То, что вы обычно делаете с, например, кнопка, просто используя его indexPath.row, чтобы сделать разницу между всеми ячейками, но поскольку это вспомогательный вид, я не смог заставить это работать! SwitchTriggered функция:
func switchTriggered() {
if lightSwitch.on {
let client:UDPClient = UDPClient(addr: "192.168.1.177", port: 8888)
let (_) = client.send(str: "HIGH")
print(String(indexPath.row) + " set to high")
} else {
let client:UDPClient = UDPClient(addr: "192.168.1.177", port: 8888)
let (_) = client.send(str: "LOW")
print(String(indexPath.row) + " set to low")
}
}
функция не знает, какой Lightswitch был включен и что indexPath есть .. Как я могу это исправить? Если бы это была кнопка, я мог бы использовать accessoryButtonTappedForRowWithIndexPath
, но это не тот случай.
Некоторая помощь будет оценена, так как вся информация о UISwitches в TableViewCells находится в Objective-C.
спасибо!
Я не знаю, если есть еще лучше (читай: встроенный) способ сделать это, но мне нравится и реализовано, принятый ответ здесь: http://stackoverflow.com/questions/29722113/how-to-access-index-path-of-button-in-a-custom-tableviewcell – Shades
Спасибо , что должно действительно исправить это. –