Если collectionView является частью этого же viewController, используйте self:
self.collectionView.layer.addSublayer(shapeLayer)
Если collectionView находится в другом viewController, как вам кажется, вам нужно получить ссылку на это представлениеконтроллер.Как вы это сделаете, зависит от структуры вашего приложения.Вы упомянули об использовании UIPageViewController
и предположительно оба контроллера представления представлены на нем.
На одном контроллере представления вы можете ссылаться на другой, например так:
let pvc = self.parent as? UIPageViewController // Or your custom class
let targetViewController = pvc.viewControllers[index] as? YourTargetViewControllerClass
Возможно, вам понадобится выяснить, что вам нужно index
.Альтернативный вариант - убедиться, что каждый дочерний контроллер представления UIPageViewController
имеет свой собственный подкласс, а затем найдите тот, который вам нужен, например:
let pvc = self.parent as? UIPageViewController
let viewControllers = pvc.viewControllers.filter { $0 is CustomSubclass }
if let viewController = viewControllers.first as? CustomSubclass {
viewController.displayCircle()
}
Как и в случае другого ответа, использование ViewController()
создаетновый экземпляр контроллера представления, а не тот, который уже существует.