swift:tableViewcell初始化

时间:2016-11-20 17:26:50

标签: ios swift uitableview

我有一个自定义UITableViewCell类,里面有一个collectionview。在这堂课中,有一个可变的" nbElements"其中包含要显示的collectionview单元格的数量。我想知道在使用dequeueReusableCell创建tableview单元格时如何初始化nbElements的值?

以下是自定义tableview单元格的代码:

class CustomTableViewCell: UITableViewCell, UICollectionViewDataSource, UICollectionViewDelegate {

@IBOutlet weak var collectionView: UICollectionView!
@IBOutlet weak var collectionViewHeightConstraint: NSLayoutConstraint!

var nbElements = Int!

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
    self.collectionView.register(UINib(nibName: "CustomCollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "customCollectionViewCell")

    self.collectionViewHeightConstraint.constant = self.collectionView.collectionViewLayout.collectionViewContentSize.height
}

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return nbElements
}

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "customCollectionViewCell", for: indexPath)
    return cell
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let cellWidth = (self.collectionView.frame.width / 2.0) - 1
    let size = CGSize.init(width: cellWidth, height: cellWidth)
    return size;
}

}

以下是创建tableview单元格时的代码:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "customTableViewCell", for: indexPath) as! CustomTableViewCell
    cell.nbElements = 4
    return cell
}

问候。

1 个答案:

答案 0 :(得分:0)

每当设置nbElements时,都会触发collectionView的重新加载。

var nbElements = Int! {
    didSet {
        collectionView.reloadData()
    }
}