在 UITableViewCell 内的 uiCollectionViewCell 中显示 Json。斯威夫特 3

Posted

技术标签:

【中文标题】在 UITableViewCell 内的 uiCollectionViewCell 中显示 Json。斯威夫特 3【英文标题】:Displaying a Json on a CollectionViewCell inside a TableViewCell. Swift 3 【发布时间】:2017-12-05 12:46:27 【问题描述】:

我正在尝试解析 Json 并将其显示为表视图单元格内的集合视图项。所以层次结构是这样的:

MainTableVIew -> TableViewCell -> CollectionView -> CollectionViewCell

所以我有 json

"payments":[
    "type":"card",
    "title":"Card"
, 
    "type":"sms",
    "title":"SMS",
    "max_amount":24
,
    "type":"account",
    "title":"Account",
    "disabled":true,
    "max_amount":-1
]

我解析了它。 我做的下一件事是在

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
            let cell = tableView.dequeueReusableCell(withIdentifier: "NewPaymentCell") as! NewPaymentTableViewCell
            cell.package?.title = payments[indexPath.row].title
            return cell

是哪个包

var package : PromoPayment? 
        didSet 
            collectionView.reloadData()
        
    

和 PromoPayment 我获取字典的类。

在 NewPaymentCollectionView 类中,我还像这样填充单元格:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "NewPaymentCollectionCell", for: indexPath) as! NewPaymentCollectionViewCell
        cell.paymentIcon.image = UIImage(named: iconImage[indexPath.row])
        cell.kidPayment?.title = (package?.title)!
        return cell
    

kidPayment 在哪里

var kidPayment : PromoPayment? 
    didSet
        namePaymentTypeLabel.text = kidPayment?.title
        
    

它在NewPaymentCollectionViewCell: UICollectionViewCell类中建模

当我调试它返回我零..

感谢您的帮助。

【问题讨论】:

【参考方案1】:

你可以试试这个,设计一个自定义的tableview单元格并在里面添加collection view。为集合视图创建一个出口并尝试按照给定的代码重新加载集合视图。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
            let cell = tableView.dequeueReusableCell(withIdentifier: "NewPaymentCell") as! NewPaymentTableViewCell
            cell.package?.title = payments[indexPath.row].title
            **cell.collectionView.reloadData()**
            return cell

不要使用 didset 方法,而是使用 this。

【讨论】:

您好,感谢您的帮助。问题是我有一个 costum 单元和一个 collectionView 类,它是 NewPaymentCollectionView。我试过你说的,但没有。我在 CollectionViewCell 中进行了调试,它甚至没有进入它... 以编程方式设置集合视图委托和数据源,就在重新加载集合视图之前。

以上是关于在 UITableViewCell 内的 uiCollectionViewCell 中显示 Json。斯威夫特 3的主要内容,如果未能解决你的问题,请参考以下文章

捏放大到 UITableViewCell 内的 UIImageView

UITableViewCell 内的 UIScrollView - 水平滚动

UITableViewCell 内的 UIStackView

修复触摸在 UITableViewCell 内的 UILabel 上不起作用?

如何增加 UItableviewcell 内的 UItableview 高度?

检测 UITableViewCell 子视图内的触摸