ниже код правильно возвращает ячейку:Найдите кнопку indexPath кнопки внутри UITableViewCell при нажатии кнопки?
func findSuperView(sender:UIButton!) -> UITableViewCell {
var superView : UIView? = sender.superview
var foundSuperView : UITableViewCell!
while superView != nil && foundSuperView == nil {
if let cell = superView as? UITableViewCell {
foundSuperView = cell
break
}
else {
superView = superView?.superview
}
}
return foundSuperView
}
Но для нахождения indexpath в Tableview он выходит из строя:
var indexPath : NSIndexPath = self.table .indexPathForCell(findSuperView(sender))!
println("Section (indexPath)")
И я попробовал другой путь, но он не был успешным:
var button : UIButton = sender as UIButton;
var touch: UITouch = events .allTouches()?.anyObject() as UITouch
var location : CGPoint = touch.locationInView(self.table)
var indexPath : NSIndexPath = self.table.indexPathForRowAtPoint(location)!
Спасибо за быстрый ответ, я применил свое решение. Меня устраивает. Но хотелось бы иметь на нем подходящее альтернативное рабочее решение. –
Нет, использование тега на основе indexPath не будет работать, если любые строки могут быть добавлены или удалены. – rmaddy
@rmaddy. Хорошая точка зрения. Я обновил свой ответ, чтобы отметить это. Поскольку другие ответы не работали для ОП, я принял совершенно другой подход в новом ответе. Поскольку мой первоначальный ответ был принят OP, я не хотел его редактировать и создавать впечатление, что мой новый ответ был принят. – vacawama