在故事板中具有多个部分的UICollectionView设置

时间:2015-07-02 03:59:33

标签: ios xcode uitableview uicollectionview

enter image description here

这是我正在努力的布局,我已经完成了设置由黑色边框表示的第1部分。我希望能够在故事板中布置我的多个单元格和部分而不是使用代码,这可能吗?

我在设置第2部分时遇到了困难,第2部分由蓝色边框和第1部分表示,它们具有不同的布局。

我设置布局的方法是否像wrowng一样?如果是这样,一些指导将不胜感激!

我的故事板(UICollectionView控制器) enter image description here

3 个答案:

答案 0 :(得分:1)

为了支持上面的布局,可以在每个UITableviewCell内部维护一个带有各种节标题和UICollectionview的UITableview,以具有水平滚动布局。 希望这有用。

答案 1 :(得分:0)

我觉得这不会奏效 因为集合视图将水平滚动设置为水平 最好和最简单的是在tableview中嵌套collectionview 这意味着你在一个viewcontroller中有mutipls collectionviews水平滚动 编辑 代码在评论中

  class TableViewCell: UITableViewCell{


    @IBOutlet weak var title: UILabel!
    @IBOutlet weak var collection: UICollectionView!
    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

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

        // Configure the view for the selected state
    }


}

    extension TableViewCell

{

    func setCollectionViewDataSourceDelegate
        <D: UICollectionView  & UICollectionViewDataSource>
        (_ dataSourceDelegate: D, forRow row:Int)
    {
        collection.delegate = dataSourceDelegate as! UICollectionViewDelegate 
        collection.dataSource = dataSourceDelegate
        collection.reloadData()
    }

}

视图控制器

UIViewController,UITableViewDelegate,UITableViewDataSource,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout,UICollectionViewDelegate {

  func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 10
    }
    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "maincell") as! TableViewCell
        cell.title.text = names[indexPath.row]
        cell.collection.tag = indexPath.row
        //collection  is the collection view 
//tag is important so you assign the cell to the specific in the collection viewcellforitem
        cell.collection.reloadData()
        return cell
    }

 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        if collectionView.tag == 0 {
// this is a collection view and it will be loaded in table view cell zero
       return     self.main1.count       

    }else {
return self.anotherarray.count }

 func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "sidecell", for: indexPath) as! Collection2
        if collectionView.tag == 0 {
 //belongs to tableview cell index 0 
            cell.title.text = self.main1[indexPath.row].Des
            }

        }

答案 2 :(得分:-2)

我解决这个问题的方法是创建一个新的UIViewController并在我需要的UICollectionViews中插入,然后相应地设置数据源和委托。