Создайте метод протокола для контроллера представления, который содержит представление коллекции.
Внутри HomeFilterVC
protocol HomeFilterVCDelegate: class {
func collectionViewDidTapped()
}
Затем объявите переменную делегата, как показано ниже, которая будет назначена вашему контроллеру представлениякоторый содержит UIContainerView
.
class HomeFilterVC: UIViewController {
weak var delegate : HomeFilterVCDelegate?
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
if let selfDelegate = self.delegate {
selfDelegate.collectionViewDidTapped()
}
}
}
Реализуйте prepare(for segue:, sender:)
и HomeFilterVCDelegate
методы в HomeVC
и обновите ваш код следующим образом.
HomeVC:
class HomeVC: UIViewController {
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "HomeFilterVC" {
let collectionVC = segue.destination as! HomeFilterVC
collectionVC.delegate = self
}
}
}
extension HomeVC: HomeFilterVCDelegate {
func collectionViewDidTapped() {
navigationItem.leftBarButtonItem = UIBarButtonItem(image: UIImage(named: "cancel-music")?.withRenderingMode(.alwaysOriginal), style: .plain, target: self, action: #selector(self.closeViewTapped)).
}
}
Надеюсь, это решит вашу проблему.