如何在 swift 3 中的 tableview 单元格中添加带有自定义视图的 collectionView?

Posted

技术标签:

【中文标题】如何在 swift 3 中的 tableview 单元格中添加带有自定义视图的 collectionView?【英文标题】:How to add a collectionView with custom view inside a tableview cell in swift 3? 【发布时间】:2017-07-11 06:24:30 【问题描述】:

我需要在 tableview 单元格的视图中添加一个集合视图。 下图描述了我所需要的。

tableView
- tableViewCell
 - contentView
     -monthView
     -detailedView
         -collectionView
           - collection Cell
               -detailedImageView

我在detailedView(tableview 单元格第二个视图)中添加了collectionview。但是我不知道我是否需要创建collectionView cell.swift文件以及整个过程如何做??

【问题讨论】:

您可以将表格单元格内的collectionview视为普通collectionView!是否需要创建自定义 collectionviewcell 取决于您!我更喜欢创建 collectionview 单元格。 @SaurabhPrajapati 您能否提供与此相关的链接或描述。因为我是 ios 新手。 这个链接可以帮到你:ashfurrow.com/blog/… @Pipiks 谢谢 【参考方案1】:

首先您需要创建collectionView 单元格文件。下面是一些示例代码,首先为 collectionViews 创建 contentOffset 数组。

var contentOffsets = [Int : CGFloat]()

那么你可以给每一行collectionViews设置tag-s来识别调用了哪个collectionView委托方法

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
        let cell = tableView.dequeueReusableCell(withIdentifier: booksListCellId) as! BooksListCell
        cell.collectionView.tag = indexPath.row

        return cell


func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) 
        let tableCell = cell as! BooksListCell
        tableCell.collectionView.dataSource = self
        tableCell.collectionView.delegate = self
        tableCell.collectionView.reloadData()
        if let offset = contentOffsets[tableCell.collectionView.tag] 
            tableCell.collectionView.setContentOffset(CGPoint(x: offset, y: 0), animated: false)
        


func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath) 
        let tableCell = cell as! BooksListCell
        contentOffsets[tableCell.collectionView.tag] = tableCell.collectionView.contentOffset.x

并在包含 tableView 的 ViewController 中实现您的 collectionView 数据源和委托方法

这里是tutorial,可能会对您有所帮助。

【讨论】:

以上是关于如何在 swift 3 中的 tableview 单元格中添加带有自定义视图的 collectionView?的主要内容,如果未能解决你的问题,请参考以下文章

如何将json对象的值设置为swift 3中tableView中动态呈现的视图中的标签?

如何将数组中的数据放入标签Swift 3

如何以编程方式将不同单元格的不同图像添加到 tableView (Swift 3)

如何在 Swift 中使用 MagicalRecord CoreData 删除 tableview 中的记录

在 Swift 3 中更改 tableView 中的图像颜色

如何在swift ios中的自定义TableView单元格中显示多个字符串值到多个标签?