Всем привет!
Пишу своё первое боевое приложение, столкнулся со следующей проблемой.
Имеется UITableViewController с кастомными ячейками. Внутри ячейки есть UIButton на которую я повесил Show segue для перехода на новую вьюху.
Нужно получить indexPath ячейки в которой была нажата кнопка для передачи данных через segue на новую вьюху.
Способ как в курсах let indexPath = tableView.indexPathForSelectedRow не работает, так как клик идёт не по самой ячейки, а по кнопке в ней.
Подскажите как решить эту задачу?
Заранее благодарен за помощь.
Как получить indexPath при переходе по segue от кнопки внутри UITableViewCell
Нашёл решение сам, мб кому из новичков ещё пригодится. Или более опытные товарищи дадут оценку.
В методе tableView cellForRowAt который добавил значение indexPath.row в поле tag моей кнопки:
cell.myButton.tag = indexPath.row
И затем в методе prepare for segue смог уже получить свой заветный indexPath.row:
let indexPathRow = (sender as! UIButton).tag
Я видел другое решение. Из ячейки протягивается action в ViewController и пишется такой код:
let point = sender.location(in: self.tableView)
let path = self.tableView.indexPathForRow(at: point)!
let card = self.dataSource[path.row] as! YourModel
let cell = self.tableView.cellForRow(at: path) as! YourCell
На stack overflow я видел много вариантов решения подобных задач, но пока мой уровень в iOS разработке не даёт мне понять, как применить их в моём случае. С вашим решением такая же беда.
я предположу что в сториборде делаешь UI. Поэтому открываешь слева ячейку, справа контроллер. И тянешь туда от кнопки action.
Ну а дальше код по распознаванию indexPath. Все просто.
Если добавлять свои свойства это уже будет кастомная кнопка. И все равно, лучше в ней не хранить индексы. Хотя если задача мелкая и вопрос решен - пользуйся, никто ж не требует все откатить и сделать по-другому.