Я пытаюсь выяснить, как успешно передать данные, когда ячейка представления коллекции выбрана, другому контроллеру представления через segue. Когда я выбираю ячейку, я получаю крэ sh. Я не сталкивался с представлением коллекции прежде. Правильно ли я подготавливаю сеуг до того, как подготовлю его? Я получаю крэ sh, когда выбираю ячейку. Мои данные возвращаются ноль. Если я пу sh контроллер представления, он работает нормально.
// Root view controller, contains collection view that holds different categories. When cell is selected, it should take user to n
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "pushToPosts" {
let vc = segue.destination as? ExplorePostsVC
if let cell = sender as? UICollectionViewCell, let indexPath = collectionView.indexPath(for: cell) {
switch selectedSegmentIndex {
case 0: vc?.style = femaleStyles[indexPath.row]
case 1: vc?.style = maleStyles[indexPath.row]
default: break
}
}
}
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
self.performSegue(withIdentifier: "pushToPosts", sender: self)
}
Когда я выбираю ячейку, я получаю фатальную ошибку. Все данные возвращают ноль в следующем контроллере представления.
// ExplorePostsVC
// To pass images and label
var styleName = ""
var styleDetails = ""
var styleImage: UIImage?
var style: Style!
var headerView: ExplorePostHeader?
override func viewDidLoad() {
super.viewDidLoad()
fetchPosts()
navigationController?.navigationBar.prefersLargeTitles = false
navigationController?.navigationItem.largeTitleDisplayMode = .never
collectionView.delegate = self
collectionView.dataSource = self
}
// Fetch posts based on selected cell
func fetchPosts() {
self.styleDetails = style.details //Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value
self.styleName = style.name
switch style.gender {
case.female:
FEMALE_STYLES_REF.child((style.childValue)).observe(.childAdded) { (snapshot) in
let postId = snapshot.key
Database.fetchPost(with: postId, completion: { (post) in
self.posts.append(post)
self.posts.sort(by: { (post1, post2) -> Bool in
return post1.creationDate > post2.creationDate
})
self.collectionView?.reloadData()
})
}
case .male:
MALE_STYLES_REF.child((style.childValue)).observe(.childAdded) { (snapshot) in
let postId = snapshot.key
Database.fetchPost(with: postId, completion: { (post) in
self.posts.append(post)
self.posts.sort(by: { (post1, post2) -> Bool in
return post1.creationDate > post2.creationDate
})
self.collectionView?.reloadData()
})
}
}
}