我创建了一个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)
}
,但在应用程序运行期间不起作用。
答案 0 :(得分:0)
“所以我固定了它”
您使错误消失了,但没有解决。您需要通过这样将其添加到其类声明中来使视图控制器类实际采用UICollectionViewDelegateFlowLayout
:
class ProfileViewController: UIViewController, UICollectionViewDelegateFlowLayout {
或通过将其添加到视图控制器的扩展中,如下所示:
extension ProfileViewController: UICollectionViewDelegateFlowLayout {