Header 在 collection 视图中不会显示?曾经工作?
Header in collection view won't show up? Used to work?
我将此项目(一个带有 collection 视图的 iMessage 应用程序)从 Swift 3 迁移到 Swift 5,一切正常,但 header视图函数根本不会触发,header 也不会出现。
我在故事板中注册了 header 单元格:
然后在collection视图函数中:
private func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView {
let headerView: HeaderCollectionReusableView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "headerCell", for: indexPath as IndexPath) as! HeaderCollectionReusableView
print("CALLED")
//header1 = headerView as! UICollectionReusableView
return headerView
}
我什至试过在故事板中将 header 变成不同的颜色,但是这个函数甚至没有打印到控制台。这里有什么问题?这曾经有效,其他细胞也有效。
I migrated this project (an iMessage app with a collection view to hold stickers) from Swift 3 to Swift 5
嗯,你没有迁移这一行:
private func collectionView(_ collectionView: UICollectionView,
viewForSupplementaryElementOfKind kind: String,
atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView {
改为:
func collectionView(_ collectionView: UICollectionView,
viewForSupplementaryElementOfKind kind: String,
at indexPath: IndexPath) -> UICollectionReusableView {
不是private
。不是 atIndexPath
。不是 NSIndexPath
。说Swift,不说Objective-C,不要对Objective-C隐藏这个方法,否则Cocoa.
不能调用
此外,请绝对确保您处于声明采用 UICollectionViewDataSource 的位置(您可能是,因为您说可以调用其他方法)。
我将此项目(一个带有 collection 视图的 iMessage 应用程序)从 Swift 3 迁移到 Swift 5,一切正常,但 header视图函数根本不会触发,header 也不会出现。
我在故事板中注册了 header 单元格:
然后在collection视图函数中:
private func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView {
let headerView: HeaderCollectionReusableView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "headerCell", for: indexPath as IndexPath) as! HeaderCollectionReusableView
print("CALLED")
//header1 = headerView as! UICollectionReusableView
return headerView
}
我什至试过在故事板中将 header 变成不同的颜色,但是这个函数甚至没有打印到控制台。这里有什么问题?这曾经有效,其他细胞也有效。
I migrated this project (an iMessage app with a collection view to hold stickers) from Swift 3 to Swift 5
嗯,你没有迁移这一行:
private func collectionView(_ collectionView: UICollectionView,
viewForSupplementaryElementOfKind kind: String,
atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView {
改为:
func collectionView(_ collectionView: UICollectionView,
viewForSupplementaryElementOfKind kind: String,
at indexPath: IndexPath) -> UICollectionReusableView {
不是private
。不是 atIndexPath
。不是 NSIndexPath
。说Swift,不说Objective-C,不要对Objective-C隐藏这个方法,否则Cocoa.
此外,请绝对确保您处于声明采用 UICollectionViewDataSource 的位置(您可能是,因为您说可以调用其他方法)。