自定义UICollectionViewCell(collectionviewcell内的表格视图)

时间:2019-07-11 23:28:40

标签: ios swift uitableview calendar uicollectionviewcell

我是新来的人,在寻找如何制作带有正方形事件列表的日历时(例如Google日历),我听到了很多“自定义Collectionviewcell”一词,因为我读到我可以使用自定义collectionviewcell来在每个collectionviewcell中都有一个tableview。 问题是我一直在寻找它,但我仍然不知道它是什么或如何实现它。有人吗 谢谢Mateo。

1 个答案:

答案 0 :(得分:0)

您想要的看起来像这样。但是我建议您查看UICollectionView和UITableView的教程,并逐步按照自己的方式进行实现。希望您能理解这一概念。但是从理论上讲,这就是在uicollectionviewCell中实现表格视图的方式。

第一堂课

    class CollectionViewController: UICollectionViewCOntroller, UICollectionViewDelegateFlowLayout {

        private let collectionViewCellIdentifier = "myCell"            

        override func viewDidLoad() {
             super.viewDidLoad()


        }

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


override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: collectionViewCellIdentifier, for: indexPath) as! YourCustomCell

    return cell
}

然后您要再做一堂课

    class YourCustomCell: UICollectionViewCell {

     lazy var tableView: UITableView = {
    let tv = UITableView()
    tv.delegate = self
    tv.dataSource = self
    tv.translatesAutoresizingMaskIntoConstraints = false

    return tv
     }()

    }


      override func didMoveToSuperview() {
    super.didMoveToSuperview()
    NSLayoutConstraint.activate([
        tableView.topAnchor.constraint(equalTo: topAnchor, constant:0 ),
        tableView.bottomAnchor.constraint(equalTo: bottomAnchor, constant: 0),
        tableView.leftAnchor.constraint(equalTo: leftAnchor, constant:0),
        tableView.rightAnchor.constraint(equalTo: rightAnchor, constant: 0)
        ])
     }

  }

,然后是YOurCustumCell的扩展名:

    extension ReceivedCell: UITableViewDataSource {

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

    return 1 

    }

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

    let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! UITableViewCell // Or perhaps a custom tableview cell class swell


    return cell
}