【问题标题】:child ViewController doesn't call delegate methods declared in parent class子 ViewController 不调用父类中声明的委托方法
【发布时间】: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 {}

【问题讨论】:

    标签: ios iphone swift


    【解决方案1】:

    通过编程方式(像这样)或通过 Interface Builder 将您的 GroupsViewController 连接UICollectionViewDelegateUICollectionViewDataSource

    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 = ""
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-05-02
          • 1970-01-01
          • 2018-04-27
          • 1970-01-01
          • 1970-01-01
          • 2013-08-13
          • 2020-12-10
          • 2019-04-26
          相关资源
          最近更新 更多