UICollectionViewCell Segue для нового ViewController - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь перейти от UICollectionViewCell к новому ViewController.Я создал переход от одного ViewController к другому и создал код ниже для выбора ячейки.

class FilmsViewController: UIViewController, UICollectionViewDelegate, 
UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, 
UISearchBarDelegate {

var films: [NSDictionary]?
var filteredFilms: [NSDictionary]?

let searchBar = UISearchBar()

//let searchController = UISearchController(searchResultsController: nil)

@IBOutlet var filmsTable: UICollectionView!

@IBOutlet var navLogo: UINavigationItem!

@IBOutlet var search: UIBarButtonItem!
@IBOutlet var back: UIBarButtonItem!

override func viewDidLoad() {
    super.viewDidLoad()


    self.filmsTable.dataSource = self
    self.filmsTable.delegate = self

    loadFilms()

}

func collectionView(_ _collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

        return filteredFilms?.count ?? 0

}

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

        let cell = filmsTable.dequeueReusableCell(withReuseIdentifier: "filmCell", for: indexPath) as! FilmCell

            let film = filteredFilms![indexPath.row]
            let title = film["title"] as! String

            cell.titleLabel.text = title


        return cell
    }



func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: NSIndexPath) {

    let film = filteredFilms![indexPath.row]
    performSegue(withIdentifier: "detailsSegue", sender: film)

}

Проблема заключается в том, что при выборе ячейки ничего не происходит.Там нет ошибки просто нет ответа на нажатие в любой из ячеек.Я полагаю, что проблема в том, что ячейка не реагирует на нажатия, но я не уверен, почему.

РЕДАКТИРОВАТЬ: Я также попытался:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: NSIndexPath) {

    performSegue(withIdentifier: "detailsSegue", sender: FilmCell)

}

с FilmCell в качестве UICollectionViewCell

Класс FilmCell:

class FilmCell: UICollectionViewCell {


@IBOutlet var posterImage: UIImageView!

@IBOutlet var titleLabel: UILabel!

override func awakeFromNib() {

}

}

Ответы [ 2 ]

0 голосов
/ 06 октября 2018

У меня был UITapGesture, используемый для отставки клавиатуры, связанной с представлением коллекции.Я был более чем на 100% уверен, что уже пытался удалить жест и код для него.Очевидно я не удалил это полностью, потому что я вернулся и попробовал снова, и это решило проблему.Жесты касания внутри представлений коллекции располагаются над ячейками, поэтому их нельзя выбирать на ощупь.

Решение заключалось в том, что в вашем UICollectionView НЕ должно быть UITapGesture.

0 голосов
/ 05 октября 2018

Попробуйте это:

    func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {

             performSegue(withIdentifier: "detailsSegue", sender: nil)
    }
...