present(_:animated:completion:)
является UIViewController
.
Чтобы иметь возможность показать (представить, нажать, выскочить и т. Д.) Еще один UIViewController
, вы должны быть UIViewController (или конкретным в случае пуша и т. Д.). Так что CollectionViewFolderCell
не может представить ваш новый UIViewController
.
Затем вам нужно сказать UIViewController
(в вашем случае CollectionViewFolder
), что ваша клетка (в вашем случае CollectionViewFolderCell
через UICollectionView
) должна сделать это. Для этого вы можете использовать шаблон делегата или замыкание.
Быстрый пример кода с закрытием:
Добавить объект к CollectionViewFolderCell
:
var onMoreInfoTap: ((ParamTypeOrClass1, ParamTypeOrClass2, etc) -> Void)?
Затем измените ваш метод:
@IBAction func moreInfoBtn(_ sender: Any) {
//Compute all your params, let's name them param1, param2, etc.
self.onMoreInfoTap?(param1, param2, etc.
}
Вкл. func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
:
cell.onMoreInfoTap = { [weak self] (param1Name, param2Name, etc) in
let viewController = //Create your target UIViewController
//Set its customs var according to Param1Name, Param2Name, etc.
self?.present(viewController, animated: true, completion:nil)
}