2016-11-10 83 views
0

我可以參考UICollectionViewCell中的UICollectionView嗎? 我終於想從UICollectionViewCell中引用ViewController。如何從UICollectionViewCell引用UICollectionView?

以下代碼位於我的CustomCollectionViewCell類中。 我想存檔此類中的tweet支持。

@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) 

     } 
    } 
} 

回答

0

請提供代碼示例或您試圖實現的內容。我的理解是,當你在你的單元上執行某些操作時,你需要在視圖控制器中進行一些操作。我對麼?

所以按照意見,自定義集合觀察室:

類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) 
    } 

} 

}

創建Extension.Swift文件:

進口的UIKit

延伸UIView {

var parentViewController: UIViewController? { 

    var parentResponder: UIResponder? = self 

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

     if let viewController = parentResponder as? UIViewController { 

      return viewController 

     } 

    } 

    return nil 

} 

}

這是爲我工作。祝一切順利!

+0

感謝您的評論。我更新了我的問題。 –

+0

您可以使用委派。因此,當您點擊單元格內的按鈕時,您可以將其委託給您的視圖控制器,然後展示您的社交風險投資。或者您也可以在UIVIew上創建一個擴展名以獲取父控制器,然後在您的自定義單元類中使用它,然後呈現View控制器。我個人會這樣做使用委託因爲一個單元格不應該有代表我感覺新控制器的代碼但我使用擴展爲您張貼解決方案。 – Ashish

+0

所以這是我的collectionview單元類。 – Ashish