Skip to content

Instantly share code, notes, and snippets.

@dimohamdy
Created April 27, 2019 20:07
Show Gist options
  • Save dimohamdy/0b3038b307358c4d2f238fa40b208a18 to your computer and use it in GitHub Desktop.
Save dimohamdy/0b3038b307358c4d2f238fa40b208a18 to your computer and use it in GitHub Desktop.
import UIKit
class BookCollectionViewCell: UICollectionViewCell {
var book: Book!
func configureCellWith(_ book: Book) {
self.book = book
}
weak var sourceVC: UIViewController!
weak var viewControllerPreviewing: UIViewControllerPreviewing!
func registerFor3DTouch(viewController: UIViewController?) {
if let viewController = viewController {
sourceVC = viewController
}
}
override func awakeFromNib() {
super.awakeFromNib()
if self.traitCollection.forceTouchCapability == .available {
if viewControllerPreviewing != nil {
sourceVC.unregisterForPreviewing(withContext: viewControllerPreviewing)
}
viewControllerPreviewing = sourceVC.registerForPreviewing(with: self, sourceView: self)
}
}
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
if self.traitCollection.forceTouchCapability == .available {
if viewControllerPreviewing != nil {
sourceVC.unregisterForPreviewing(withContext: viewControllerPreviewing)
}
viewControllerPreviewing = sourceVC.registerForPreviewing(with: self, sourceView: self)
}
}
}
extension BookCollectionViewCell: UIViewControllerPreviewingDelegate {
func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
return AboutBookViewControllerWith(book)
}
func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) {
sourceVC.show(viewControllerToCommit, sender: self)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment