Я пытаюсь создать функцию делегата, чтобы перезагрузить представление коллекции в другом контроллере представления в событии.Получить правильный экземпляр ViewController для использования с функцией делегата
С этой целью я определил протокол, задал делегат в классе и простую функцию делегата.
protocol ReloadCollectionDelegate: class {
func reloadCollectionViewFromDelegate()
}
class JourneyViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate, UITabBarControllerDelegate, UIScrollViewDelegate, ReloadCollectionDelegate {
// delegate function from downloadCollectionController to relaod collection
func reloadCollectionViewFromDelegate() {
// simply call the reload function
reloadCollection()
}
И в моем классе, который будет вызывать вышеуказанную функцию:
// define the delegate for use
weak var reloadJourneyDelegate: ReloadCollectionDelegate?
// reload the collection view in JourneyViewController
let JVC = self.viewController.storyboard!.instantiateViewController(withIdentifier: "JourneyViewController") as! JourneyViewController
self.reloadJourneyDelegate = JVC
self.reloadJourneyDelegate?.reloadCollectionViewFromDelegate()
печати (JVC):
JourneyViewController: 0x7fc7f7c55bf0
печати (само) - от JourneyViewController (viewDidLoad):
JourneyViewController: 0x7fc7f7e2db10
Так что я получаю разные экземпляры одного и того же контроллера.
Как определить это, чтобы у меня был правильный экземпляр и вы можете изменить пользовательский интерфейс?
Благодаря
Где вы звоните в viewDidLoad? –
печать self in viewDidload() в классе JourneyViewController – Pippo