在集合视图中的表视图

时间:2018-06-15 09:27:35

标签: ios swift uicollectionview tableview

我有UICollectionView水平滚动方向。 它有一个按钮。在该按钮上单击我想显示列表tableView。我的问题是我应该在哪里实现表视图委托方法, 在BasicVC中,我创建了collectionView

 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let c = collectionView.dequeueReusableCell(withReuseIdentifier:"cell", for: indexPath)
    let btn = c.viewWithTag(9) as? UIButton
    btn?.layer.masksToBounds = true
    btn?.layer.cornerRadius = (btn?.frame.size.height)!/2
    btn?.backgroundColor = getRandomColor()
    return c
}

collectionCell班。

class PlayerHeaderCell: UICollectionViewCell{
@IBOutlet weak var btn: UIButton!}

3 个答案:

答案 0 :(得分:0)

tableView委托方法需要在UICollectionViewCell中实现,如此

class PlayerHeaderCell: UICollectionViewCell,  UITableViewDataSource, UITableViewDelegate{


    @IBOutlet weak var btn: UIButton!
    @IBOutlet weak var tableView: UITableView!

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

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

}

答案 1 :(得分:0)

听起来你想在集合视图的顶部弹出一个表格视图,就像下拉菜单一样?如果您想要一个显示在当前视图顶部的表视图,我建议在包含表视图的故事板中为它创建一个新的视图控制器,然后在当前视图之上显示该控制器视图。结果将是一个在您的集合视图顶部浮动的表格视图。

与其他答案所说的不同,不要让集合单元格成为表视图委托,除非你想为每个单元格设置不同的表视图,否则它没有意义,在这种情况下你应该这样做并设置委托成为选定的收集单元。

实现弹出表视图:

  1. 在情节提要中创建视图控制器
  2. 创建一个新的表视图,将其置于新视图控制器的默认视图中(默认视图用作背景但不可见。)
  3. 将视图控制器的演示文稿设置为Over Content
  4. 通过更改颜色
  5. 将新视图控制器背景视图设置为完全透明
  6. Ctrl键从上一个视图控制器拖动到新的视图控制器并创建一个模态segue,给它一些标识符字符串“id”。
  7. 使用您设置的ID调用performSegue将导致表视图显示在您创建的新视图控制器中。
  8. 这种方法的优点是可以在其视图控制器中设计您的表视图,并且不会使故事板中的原始视图控制器混乱。只是我的想法,你似乎是以编程方式做事,所以我不确定它是否适合你的用例,但我希望它有所帮助。

答案 2 :(得分:-1)

这取决于您在哪里显示tableview。我的意思是当你点击按钮时,如果你使用tableview导航到一个新的控制器,代表应该在新的控制器中。或者,如果您在同一个控制器中显示tableview,则代理将在BasicVC中。我认为收集单元只有按钮。 这是我的理解。如果我错了,请纠正。