我有 2 个容器视图,其中分别嵌入了一个 UITableViewController(sideMenuVC) 和一个 UICollectionViewController(centerVC),我的 CollectionVC 位于导航控制器本身内。我已将这两个容器视图放在第三个 VC 中,即 rootVC。现在我正在尝试根据在 sideMenuVC 中选择的行在我的 centerVC 中显示内容,并且我正在使用委托,但是,当我尝试从发件人调用委托时,委托为 nil。我尝试将委托设置为弱,并将委托设置为 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 实例,但我找不到任何解决方法。