Я пытаюсь создать протокол, который автоматически добавит UICollectionView к любому UIViewController, который соответствует.
Вот мой текущий код:
protocol ReusableNavigation {
var actionContainer: UIView! { get }
func addActionMenuCollection()
}
extension ReusableNavigation where Self: UICollectionViewDataSource {
func addActionMenuCollection() {
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 20, left: 10, bottom: 10, right: 10)
layout.itemSize = CGSize(width: 60, height: 60)
let actionMenu:UICollectionView = UICollectionView(frame: self.actionContainer.frame, collectionViewLayout: layout)
actionMenu.dataSource = self
actionMenu.delegate = self
actionMenu.register(UINib(nibName: "ActionCell", bundle: nil), forCellWithReuseIdentifier: "actionCell")
actionMenu.semanticContentAttribute = UISemanticContentAttribute.forceRightToLeft
self.actionContainer.addSubview(actionMenu)
}
}
Очевидно, вышеприведенные ошибки кода когда я пытаюсь установить делегат actionMenu, поскольку self является ТОЛЬКО UICollectionViewDataSource
, я не могу на всю жизнь выяснить синтаксис расширения протокола, где self будет равно ОБА UICollectionViewDataSource и UICollectionViewDelegate.
Возможно ли это? Мысли?