Добрый день. Подскажите, пожалуйста, в чем моя ошибка. По уроку все получилось, но не могу сделать segue на второй View Controller из ячейки Collection View
Заранее благодарен
Добрый день. Подскажите, пожалуйста, в чем моя ошибка. По уроку все получилось, но не могу сделать segue на второй View Controller из ячейки Collection View
Заранее благодарен
Здравствуйте!
Присоединяюсь к вопросу. Пытаюсь делать по аналогии предыдущего урока по UITableView, там для передачи данные с TableView на ViewController используется следующий метод
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "ShowDetail" {
if let indexPath = self.tableView.indexPathForSelectedRow {
let detailsVC = segue.destination as! DetailVC
detailsVC.trackTitle = imageNameArray[indexPath.row]
}
}
}
Вопрос в том, как по аналогии передать из CollectionView, т.е. как выбрать конкретный объект - я у CollectionView нашел только indexPathsForSelectedItems - но это походу не то, или неправильно применяю.
Буду благодарен за помощь
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
}
Это всё конечно очень классно, но этот урок испортил мой день(( … Я 3 раза садился за эту задачу сегодня, потратив суммарно перебором (рандомным программированием) - более часа, и казалось бы это не много, но так и вариантов над которым можно было подумать - там особо и не было.
Первое решение которое я нашел на форуме -
collectionView.indexPathsForSelectedItems.first
Решение рабочее, но только не понятно, откуда мы должны были взять этот .first? Как можно было до этого догадаться? ((
Решение которое я нашел на stackoverflow -
let cell = sender as ! UICollectionViewCell
if let indexPath = self.collectionView.indexPath(for: cell)
выглядит поприятнее…
Но вопрос остается… Что прям все как то сами это решили эту задачу, что никто на форуме этим не интересовался и темы данной нет?
А то мне теперь не дает покоя мысль, что я один тут “недалекий” какой-то(
Действительно, не так просто было разобраться.
Вот полное решение:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "ShowDetail" {
let cell = sender as! UICollectionViewCell
let indexPath = self.collectionView?.indexPath(for: cell)
let detailsVC = segue.destination as! DetailVC
detailsVC.trackTitle = imageNameArray[indexPath!.row]
}
}