Как получить indexPath.section и indexPath.row при нажатии кнопки в ячейке?

У меня есть таблица, разделенная на разделы, я должен печатать номер строки и раздела, когда я нажимаю кнопку в ячейке. Как я могу получить это?


person ilbòem    schedule 28.09.2017    source источник
comment
@vadian, что касается вопроса, я понимаю, что речь идет не об обнаружении кнопки в ячейке, а о получении строки и раздела из этой ячейки. Вы можете использовать это закрытие в ссылке, предоставленной vadian, кроме того, вы можете передать indexpath в качестве параметра закрытия   -  person Ajay Singh Mehra    schedule 29.09.2017
comment
Связанный вопрос описывает способ получения indexPath.section и indexPath.row при нажатии кнопки в ячейке.   -  person vadian    schedule 29.09.2017


Ответы (2)


Сохраните indexPath в своей ячейке и получите его при нажатии кнопки.

Контроллер табличного представления

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "custom") as! CustomTableCell
    cell.indexPath = indexPath

    return cell
}

Пользовательская ячейка таблицы

class CustomTableCell: UITableViewCell {
    var indexPath: IndexPath!

    @IBAction func buttonPressed() {
        print(indexPath)
    }
}
person Tamás Sengel    schedule 28.09.2017
comment
Нет необходимости сохранять путь индекса в настраиваемой ячейке tableview, когда путь индекса передается в метод делегата tableView:didSelectCellAtIndexPath. - person tww0003; 28.09.2017
comment
Имейте в виду, что OP хочет получить indexPath при нажатии кнопки, а не саму ячейку. - person Tamás Sengel; 28.09.2017
comment
А, я неправильно понял вопрос. Создавать пользовательскую ячейку по-прежнему не нужно. Когда кнопка нажата, захватите ячейку таблицы со свойством super view кнопки. Затем использовали метод indexPathForCell для табличного представления, чтобы получить путь к индексу. - person tww0003; 28.09.2017

Реализуйте метод tableView:didSelectRowAtIndexPath:. Когда он будет вызван, будет передан NSIndexPath со свойствами раздела и строки.

Этот метод будет вызываться каждый раз, когда нажимается ячейка таблицы. Индексный путь будет индексным путем ячейки, которая была нажата.

https://developer.apple.com/documentation/uikit/uitableviewdelegate/1614877-tableview

РЕДАКТИРОВАТЬ:

Я неправильно понял вопрос. Когда кнопка нажата, получите TableViewCell от кнопки, получив доступ к суперпредставлению кнопки. Затем используйте метод indexPathForCell TableView, чтобы получить indexPath кнопки.

person tww0003    schedule 28.09.2017