为啥 UICollectionView 的委托方法不起作用?
Posted
技术标签:
【中文标题】为啥 UICollectionView 的委托方法不起作用?【英文标题】:Why does the UICollectionView's delegate methods don't work?为什么 UICollectionView 的委托方法不起作用? 【发布时间】:2019-11-17 22:55:48 【问题描述】:我创建了一个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】:“所以我把它修好了”
你让错误消失了,但你没有修复它。您需要让您的视图控制器类真正采用UICollectionViewDelegateFlowLayout
,方法是将其添加到其类声明中,如下所示:
class ProfileViewController: UIViewController, UICollectionViewDelegateFlowLayout
或将其添加到视图控制器的扩展中,如下所示:
extension ProfileViewController: UICollectionViewDelegateFlowLayout
【讨论】:
以上是关于为啥 UICollectionView 的委托方法不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
未调用 UICollectionView 内部 UITableView 的委托方法
在实例化单元格之前调用 UICollectionView 委托方法?
UICollectionView 未显示 & 未调用委托/数据源方法