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