2016-09-29 9 views
5

Ich habe meine Sammlung Ansicht bereit zu gehen, und ich versuche didSelectItemAt zu tun, um zur Detailansicht zu gelangen. Aber ich möchte nur testen, jedes der Elemente zu protokollieren und es protokolliert nicht.didSelectItemAt wird nicht aufgerufen

Ich habe alle Delegierten schon:

*

class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, UISearchBarDelegate {* 

    @IBOutlet weak var activityIndicatorView: UIActivityIndicatorView! 
    @IBOutlet weak var searchBar: UISearchBar! 
    @IBOutlet weak var collection: UICollectionView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     collection.dataSource = self 
     collection.delegate = self 
     searchBar.delegate = self 

     activityIndicatorView.isHidden = true 


     let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard") 
     view.addGestureRecognizer(tap) 
    } 

*

Was mache ich falsch?

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    let movie : Movie 

    movie = MOVIE_ARRAY[indexPath.row] 
    print(movie.plot) 
} 

enter image description here

+1

Haben Sie die Delegierten Sammlung Ansicht? – rmaddy

+0

Überprüfen Sie, ob Sie nicht didDeselectItemAt IndexPath anstelle von didSelectItemAt –

+0

didSelectItemAt verwendet wurde :) googelte für eine Stunde und das ist der häufigste Fehler. Ja, die Delegierten der Ansicht sind alle eingestellt. –

Antwort

17

Sie haben einen TapGestureRecognizer auf der Ansicht hinzugefügt. TapGestureRecognizer hat eine Eigenschaft cancelsTouchesInView.

- var cancelsTouchesInView: Bool {set erhalten}

Ein boolescher Wert beeinflussen, ob Berührungen zu einer Ansicht geliefert werden, wenn eine Geste erkannt wird.

Dies ist true standardmäßig aktiviert und verhindert didSelectItemAt Aufruf da berührt wird nicht der Ansicht geliefert, nachdem ein Hahn erkannt wird. Sie müssen es false wie folgt festgelegt:

let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "dismissKeyboard") 
tap.cancelsTouchesInView = false 
view.addGestureRecognizer(tap)