3
swift 3與Xcode 8.2我不能得到一個reusableHeaderView
與UICollectionView
顯示。我在我的頭文件視圖文件中的不同位置放置了斷點,並且它們從不被觸發。這是我的代碼。Swift 3 UICollectionView可重複使用部分標題將不會顯示
import UIKit
class WishListViewController: UIViewController,
UICollectionViewDelegateFlowLayout,
UICollectionViewDataSource {
var collectionView: UICollectionView!
var wishListItems = [[String:Any]]()
var shops = [[String: Any]]()
let cellId = "WishListCell"
let headerId = "WishListHeaderView"
var screenSize: CGRect!
var screenWidth: CGFloat!
var screenHeight: CGFloat!
let imageAspectRatio: CGFloat = 1.2
override func viewDidLoad() {
super.viewDidLoad()
screenSize = UIScreen.main.bounds
screenWidth = screenSize.width
screenHeight = screenSize.height
let layout: UICollectionViewFlowLayout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
layout.itemSize = CGSize(width: screenWidth, height: ((screenWidth/3) * imageAspectRatio) + 20)
layout.minimumInteritemSpacing = 0
layout.minimumLineSpacing = 0
layout.estimatedItemSize.height = ((screenWidth/3) * imageAspectRatio) + 20
layout.estimatedItemSize.width = screenWidth
collectionView = UICollectionView(frame: self.view.frame, collectionViewLayout: layout)
collectionView.delegate = self
collectionView.dataSource = self
collectionView.register(WishListCell.self, forCellWithReuseIdentifier: cellId)
collectionView.register(WishListHeaderView.self, forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: headerId)
collectionView.backgroundColor = UIColor.white
self.view.addSubview(collectionView)
// Do any additional setup after loading the view.
}
func collectionView(_ collectionView: UICollectionView,
viewForSupplementaryElementOfKind kind: String,
at indexPath: IndexPath) -> UICollectionReusableView {
switch kind {
case UICollectionElementKindSectionHeader:
let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind,
withReuseIdentifier: headerId,
for: indexPath) as! WishListHeaderView
headerView.textLabel.text = shops[indexPath.section]["shop_name"] as? String
return headerView
default:
assert(false, "Unexpected element kind")
}
}
這是我的標題視圖文件。
import UIKit
class WishListHeaderView: UICollectionReusableView {
var textLabel: UILabel
let screenWidth = UIScreen.main.bounds.width
override init(frame: CGRect) {
textLabel = UILabel()
super.init(frame: frame)
self.addSubview(textLabel)
textLabel.font = UIFont.systemFont(ofSize: UIFont.smallSystemFontSize)
textLabel.textAlignment = .left
textLabel.numberOfLines = 0
textLabel.lineBreakMode = NSLineBreakMode.byWordWrapping
textLabel.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
NSLayoutConstraint(item: textLabel, attribute: .leading, relatedBy: .equal,
toItem: self, attribute: .leadingMargin,
multiplier: 1.0, constant: 0.0),
NSLayoutConstraint(item: textLabel, attribute: .trailing, relatedBy: .equal,
toItem: self, attribute: .trailingMargin,
multiplier: 1.0, constant: 0.0),
])
self.backgroundColor = .white
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}