узнать индекс ячейки на которую нажал пользователь (Swift)
Я разместил на ViewController TableView, а на ней TableViewCell. Хочу вызвать саму tableView, чтобы у нее вызвать indexPathForSelectedRow, но он не находит tableView. Что сделать в данной ситуации? """
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showDetail" {
guard let indexPath = 'tableView.indexPathForSelectedRow' else { return }
let place = places[indexPath.row]
let newPlaceVC = segue.destination as! NewPlaceTableViewController
newPlaceVC.currentPlace = place
}
}
"""
Ответы (2 шт):
Автор решения: Oleg Soloviev
→ Ссылка
Нужно убрать кавычки вокруг tableView.indexPathForSelectedRow, иначе нет обращения к переменной indexPathForSelectedRow:
guard let indexPath = tableView.indexPathForSelectedRow else { return }
Автор решения: Marat
→ Ссылка
Возможно, удобнее будет сделать это через UITableViewDelegate
class ViewController: UIViewController {
var selectedPlace: String?
@IBOutlet var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showDetail" {
let newPlaceVC = segue.destination as! NewPlaceTableViewController
newPlaceVC.currentPlace = self.selectedPlace
}
}
}
extension ViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
// Метод вызывается каждый раз при выделении ячейки
self.selectedPlace = places[indexPath.row]
performSegue(withIdentifier: "showDetail", sender: self)
}
}