子 ViewController 不调用父类中声明的委托方法
Posted
技术标签:
【中文标题】子 ViewController 不调用父类中声明的委托方法【英文标题】:child ViewController doesn't call delegate methods declared in parent class 【发布时间】:2017-09-07 10:19:11 【问题描述】:我有一个父类:GroupsViewController
。这个类中有一个 UICollectionView 插座,它在情节提要中与它的子类NearbyGroupViewController
中的 UICollectionView 连接。所有委托方法都在父类GroupsViewController
中实现。问题是当NearbyGroupViewController
打开时,委托方法永远不会被调用。我做错了什么?
class GroupsViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout
@IBOutlet weak var collectionView: UICollectionView
...
class NearbyGroupViewController: GroupsViewController
【问题讨论】:
【参考方案1】:通过编程方式(像这样)或通过 Interface Builder 将您的 GroupsViewController
连接 到 UICollectionViewDelegate
和 UICollectionViewDataSource
。
self.collectionView.delegate = self
self.collectionView.datasource = self
编辑:
问题是当 NearbyGroupViewController 打开时,委托方法永远不会被调用。我做错了什么?
您的NearbyGroupViewController
还需要连接到UICollectionView
的委托和数据源。
【讨论】:
是的,我的错。谢谢。【参考方案2】:您是否尝试过在父类本身中实现委托方法?
【讨论】:
【参考方案3】:你必须设置delegate = self
(NearbyGroupViewController 的实例)
意味着当您在父视图控制器 (GroupsViewController
) 中创建子视图控制器 (NearbyGroupViewController
) 的实例时,您必须设置此 delegate
。
let targetVC: NearbyGroupViewController = self.storyboard!.instantiateViewController(withIdentifier: "NearbyGroupViewController") as! NearbyGroupViewController
targetVC.delegate = self
self.navigationController!.pushViewController(targetVC, animated: true)
在上面的示例中,您必须在情节提要文件中设置 storyboard identifier
和 "NearbyGroupViewController"
。
【讨论】:
【参考方案4】:试试这个代码
let parent = GroupsViewController()
那就用
parent.title = ""
【讨论】:
以上是关于子 ViewController 不调用父类中声明的委托方法的主要内容,如果未能解决你的问题,请参考以下文章