2016-11-10 2 views
0

Puis-je faire référence à UICollectionView à partir de UICollectionViewCell? Je veux enfin référencer ViewController depuis UICollectionViewCell.Comment référencer UICollectionView depuis UICollectionViewCell?

Les codes suivants figurent dans ma classe CustomCollectionViewCell. Je veux archiver le support de tweet dans cette classe.

@IBAction func tweetBtnTapped(_ sender: Any) { 
    let cvc = SLComposeViewController(forServiceType: SLServiceTypeTwitter) 
    if let c = cvc { 
     c.setInitialText("test tweet from iOS App") 

     ### How can I refer ViewController?? 
     viewController = ??????? 

     if let vc = viewController { 
      vc.present(c, animated: true, completion: nil) 

     } 
    } 
} 

Répondre

0

Veuillez fournir l'échantillon de code ou ce que vous essayez d'obtenir. Ce que je comprends, c'est que vous voulez une action dans votre contrôleur de vue lorsque vous effectuez une action sur votre cellule. Ai-je raison?

Alors Selon les commentaires, collection personnalisée cellule de vue:

classe CustomeCell: UICollectionViewCell {

@IBAction func tweetButtonPressed() { 

    let cvc = SLComposeViewController(forServiceType:SLServiceTypeTwitter) 
    if let c = cvc { 
     c.setInitialText("test tweet from iOS App") 

     self.parentViewController?.presentViewController(c, animated: true, completion: nil) 
    } 

} 

}

Créer un fichier Extension.Swift:

importation UIKit

extension UIView {

var parentViewController: UIViewController? { 

    var parentResponder: UIResponder? = self 

    while parentResponder != nil { 
     parentResponder = parentResponder!.nextResponder() 

     if let viewController = parentResponder as? UIViewController { 

      return viewController 

     } 

    } 

    return nil 

} 

}

Cela fonctionne pour moi. Bonne chance!

+0

Merci pour votre commentaire. J'ai mis à jour ma question. –

+0

Vous pouvez utiliser la délégation. Ainsi, lorsque vous appuyez sur un bouton à l'intérieur de votre cellule, vous pouvez déléguer à votre contrôleur de vue, puis présenter votre VC sociale. ou Vous pouvez également créer une extension sur UIVIew pour obtenir le contrôleur parent, puis l'utiliser dans votre classe de cellule personnalisée, puis présenter le contrôleur View. Personnellement, je le ferais en utilisant la délégation Parce qu'une cellule ne devrait pas avoir le code pour présenter le nouveau contrôleur, je me sens Mais je poste la solution en utilisant l'extension pour vous. – Ashish

+0

Donc, ceci est ma classe de cellules de vue de collection. – Ashish