2016-11-10 9 views
0

Могу ли я передать UICollectionView из UICollectionViewCell? Наконец-то я хочу обратиться к ViewController из UICollectionViewCell.Как передать UICollectionView из UICollectionViewCell?

Следующие коды находятся в моем классе CustomCollectionViewCell. Я хочу архивировать поддержку твитов в этом классе.

@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

Вы можете использовать делегацию. Итак, когда вы нажимаете на кнопку внутри своей ячейки, вы можете делегировать ее обратно в контроллер просмотра, а затем представить свой социальный VC. или Вы также можете создать расширение на UIVIew, чтобы получить родительский контроллер, а затем использовать его внутри своего собственного класса ячеек, а затем представить контроллер View. Я лично сделаю это с помощью делегирования. Поскольку ячейка не должна иметь код для представления нового контроллера, я чувствую, но я отправляю решение с помощью расширения для вас. – Ashish

+0

Итак, это мой класс cellview. – Ashish

Смежные вопросы