无法通过Delegate / Protocol访问父VC中的func

问题描述

无法通过委托/协议从子级访问父视图控制器中的功能print()不打印。

在儿童VC中,我有这个:

protocol MyViewControllerDelegate: class {
    func requestExpandedView()
}
    
class MyViewController: UIViewController {
        
    weak var delegate: MyViewControllerDelegate?
    ...

    func collectionView(_ collectionView: UICollectionView,didSelectItemAt indexPath: IndexPath) {

        print("\(indexPath) didSelectItemAt")
        
        delegate?.requestExpandedView()  
    }
}

在上级VC中,我有这个:

extension MessagesViewController: MyViewControllerDelegate {
    func requestExpandedView() {
        print("Done") // doesn't print anything
        requestPresentationStyle(.expanded)
    }
}

怎么了?

解决方法

创建实例delegate的{​​{1}}时需要设置

MyViewController

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...