У меня есть 2 контейнерных представления, в которые встроены UITableViewController (sideMenuVC) и UICollectionViewController (centerVC) соответственно, и мой CollectionVC находится внутри самого контроллера навигации. Я поместил эти два контейнерных представления в третий виртуальный канал, который является корневым. Теперь я пытаюсь показать содержимое в моем centerVC на основе строки, выбранной в sideMenuVC, и я использую делегаты, однако, когда я пытаюсь вызвать его от отправителя, делегат равен нулю. Я попытался установить делегата как слабого, а также установить делегата в awakeFromNib вместо viewDidLoad, я также попытался установить делегата из разных VC.
Вот мой протокол:
import Foundation
import Photos
protocol sideMenuDelegate {
func handleRowSelection(title: String, fetchResult: PHFetchResult<PHAsset>, assetCollection: PHAssetCollection?)
}
и вот как я устанавливаю делегата внутри третьего виртуального контейнера, который содержит оба представления контейнера:
let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
sideMenuVC = storyboard.instantiateViewController(withIdentifier: "sideVC") as? SideMenuViewController
centerVC = storyboard.instantiateViewController(withIdentifier: "centerVC") as? centerViewController
sideMenuVC?.delegate = centerVC
Я также попытался установить его в моем центре ВК, например:
let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
sideMenuVC = storyboard.instantiateViewController(withIdentifier: "sideVC") as? SideMenuViewController
sideMenuVC?.delegate = self
и, наконец, это реализация делегата func:
extension centerViewController: sideMenuDelegate {
func handleRowSelection(title: String, fetchResult: PHFetchResult<PHAsset>, assetCollection: PHAssetCollection?) {
pageTitle = title
inFetchResult = fetchResult
inAssetCollection = assetCollection
}
}
Я думаю, что проблема в том, чтобы получить доступ к правильному экземпляру VC из раскадровки, но я не мог найти способ исправить это.