Этот вопрос, вероятно, имеет очень простой ответ, но я не могу опустить его в голову. Я также не могу найти особенно полезный ответ, который работает в любом месте в Интернете.Segue из UICollectionView в Swift
Я просто не могу получить работу segue из UICollectionViewCell. Я, возможно, прихожу к нему с неправильного угла, поскольку я предположил, что это сработало очень похоже на segue таблицы. Работая над этой посылки, если я использую представление таблицы, это будет выглядеть примерно так:
if segue.identifier == "TripsToPastTripDetailsSegue" {
let newViewController = segue.destinationViewController as! pastTripDetailViewController
let selectedRow: NSManagedObject = tripsList[tableView.indexPathForSelectedRow!.row] as NSManagedObject
newViewController.passedTrip = selectedRow as! Trips
}
Таким образом, с точки зрения таблицы я бы проходящее один объект (от Core Data) по сравнению с другим видом контроллер. Просто. Но я просто не могу перевести это на представление коллекции.
, которые я пытался что-то вдоль этих линий:
if segue.identifier == "pastTripCollectionToSavedLocationSegue" {
let newViewController = segue.destinationViewController as! pastTripDetailViewController
let selectedRow: NSManagedObject = locationsList[collectionView.indexPathForCell(pastLocationImageCollectionViewCell)] as! NSManagedObject
newViewController.passedTrip = selectedRow as! Trips
}
Но это дает мне ошибку Не удается найти член «indexPathForCell», так что я, очевидно, делать что-то очень неправильно. Это одна из многих ошибок, которые я имел во время игры с кодом.
Может кто-нибудь указать мне в правильном направлении?
EDIT:
По просьбе @Laffen, то UICollectionView появляется в следующих местах в коде:
class pastTripDetailViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, MKMapViewDelegate {
Как IBOutlet:
@IBOutlet weak var collectionView: UICollectionView!
источника данных и делегата ViewDidLoad:
self.collectionView.dataSource = self
self.collectionView.delegate = self
А вот остальное:
func collectionView(collectionView: UICollectionView, numberOfSectionsInCollectionView indexPath: Int) -> Int {
return 1
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.locationsList.count
}
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let location = self.locationsList[indexPath.row]
let cell: pastLocationImageCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("imageCell", forIndexPath: indexPath) as! pastLocationImageCollectionViewCell
cell.locationImage.image = UIImage(data: location.image!)
return cell
}
func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
performSegueWithIdentifier("pastTripCollectionToSavedLocationSegue", sender: self)
}
Где вы инициализируете 'collectionView' и действительно ли это' UICollectionView'? – Laffen
@ Laffen, я добавил остальную часть кода, относящегося к коллекцииView. –
Я обновил свой ответ .. Я думаю, что он должен работать – Laffen