Поскольку @KrishnaCA говорит в своем ответе, если вы хотите, чтобы вся этикетка была нажата, возможно, лучше использовать кнопку. Если вам нужно, чтобы он выглядел иначе, чем кнопка, вы также можете поместить прозрачную кнопку (пользовательский стиль без изображения) поверх метки.
Независимо от того, используете ли вы кнопку или ярлык + распознаватель жестов, вы все равно должны выяснить, на каком индексе, на который пользователь постучал. Вы можете поместить тег в кнопку/метку, как предлагает Хамид, но это хрупко. Я предпочитаю другой способ. Я написал расширение для UITableView, который позволяет выяснить, в какой ячейке принадлежит данный вид:
public extension UITableView {
/// This method returns the indexPath of the cell that contains the specified view
/// - parameter view: The view to find.
/// - returns: The indexPath of the cell containing the view, or nil if it can't be found
func indexPathForView(_ view: UIView) -> IndexPath? {
let origin = view.bounds.origin
let viewOrigin = self.convert(origin, from: view)
let indexPath = self.indexPathForRow(at: viewOrigin)
return indexPath
}
}
Если добавить, что расширение для вашего проекта вы можете использовать код, как показано ниже.
Жест распознаватель:
@objc func alertClicked(sender: UIGestureRecognizer){
let view = sender.view
let indexPath = tableView.indexPathForView(view)
//Do whatever you need to do with the indexPath
}
или, кнопки действий:
@objc func buttonClicked(sender: UIButton) {
let indexPath = tableView.indexPathForView(sender)
//Do whatever you need to do with the indexPath
}
Вы хотите нажать на определенную часть ярлыка или на полной этикетке? Если это будет полным, нет смысла использовать ваш подход.Вместо этого используйте 'UIButton' – KrishnaCA
. Фактически это обратный отсчет и по его завершению меняют текст ярлыка и делают его интерактивным. – Dia
Вы можете использовать' UIButton' и включить/отключить его соответственно, используя свойство 'enabled' – KrishnaCA