2016-05-02 14 views
0

Ich möchte Protokolle verwenden. Ich habe eine Sammlungsansicht und Sammlungsansichtszellen, die zu dieser Sammlungsansicht gehören. Ich habe einen Knopf in dieser Zelle. Ich möchte eine Methode in der CollectionView-Klasse (nicht in der Zellklasse) aufrufen, wenn der Benutzer auf diese Schaltfläche klickt.Mit Protokoll in Swift

Ich definiere meine Zellklasse mit folgendem Code:

protocol testPro { 
    func replyClicked() 
} 

class MessageGalleryViewControllerCellCollectionViewCell: UICollectionViewCell { 

    var test1: testPro? 

    // ... 
} 

dann, wenn der Benutzer tippt auf Knopfsystem calling folgende Methode in Zellklasse.

func replyAction(sender:UIButton!) 
{ 
    test1?.replyClicked() 

} 

And My Sammlung Ansicht Klasse:

class ReceivedPhotosViewController: UIViewController,UICollectionViewDelegateFlowLayout, UICollectionViewDataSource, testPro { 

    func replyClicked() { 
     print("clicked") 
    } 
} 

Aber ich kein Protokoll wie "geklickt" sehen kann. Es funktioniert also nicht. Wo ist das Problem?

+0

Wo setzen Sie die Zelle "testPro"? Sie müssen es nach dem Instanziieren der Zelle in 'cellForItemAtindexPath' auf den View-Controller zurücksetzen. – JAL

+0

Können Sie mehr erklären? Überprüfen Sie auch dies: http: // printscr.com/azjkdd –

+0

'cell.test1 = selbst' – JAL

Antwort

0

Sie weisen Ihre Zelle nicht test1 zu. Setzen Sie in Ihrer cellForItemAtindexPathcell.test1 = self nach dem Instanziieren der Zelle.

Verwandte Themen