为什么UICollectionView的委托方法不起作用?

时间:2019-11-17 22:55:48

标签: ios swift uicollectionview delegates uicollectionviewdelegateflowlayout

我创建了一个collectionView,并且使它的委托符合附加到主 ViewController UICollectionViewDelegateFlowLayout协议,以便修改UICollectionView's单元格的某些方面。 最初我是这样做的:

override func viewDidLoad() {
    super.viewDidLoad()
    self.collectionView.delegate = self 

}

然后我意识到由于出现错误,此操作不起作用,因此我将其修复为:

 override func viewDidLoad() {
    super.viewDidLoad()
    self.collectionView.delegate = self as? UICollectionViewDelegateFlowLayout

}

问题在于,我尝试在 ViewController 中实现的每种方法在运行时似乎都不起作用。

f.e。我在这里实现了这种方法:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

    return CGSize(width: collectionView.frame.width/3, height: collectionView.frame.width/3)

}

,但在应用程序运行期间不起作用。

1 个答案:

答案 0 :(得分:0)

  

“所以我固定了它”

您使错误消失了,但没有解决。您需要通过这样将其添加到其类声明中来使视图控制器类实际采用UICollectionViewDelegateFlowLayout

class ProfileViewController: UIViewController, UICollectionViewDelegateFlowLayout {

或通过将其添加到视图控制器的扩展中,如下所示:

extension ProfileViewController: UICollectionViewDelegateFlowLayout {