在TableViewCell内的CollectionViewCell上显示Json。斯威夫特3

时间:2017-12-05 12:46:27

标签: ios json swift uitableview

我正在尝试解析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

中建模

当我调试它时返回我的nil ..

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

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方法,而是使用它。