在collectionCell中的collectionCell中使用Class / Struct以获取将来的传递数据

时间:2017-09-18 12:09:29

标签: ios swift class collections

如何在 collectionCell 中的模型类中正确加载数组(图像,图像2,图像3 )?

课程本身模型如下所示:

class Model {

    var image: String
    var image2: String
    var image3: String
    var images: [String] = []
    var images2: [String] = []
    var images3: [String] = []
    var ref: FIRDatabaseReference!

    init(snapshot: FIRDataSnapshot) {
        ref = snapshot.ref
        let value = snapshot.value as! NSDictionary
        let snap = value["hall1"] as? NSDictionary
        let snap2 = value["hall2"] as? NSDictionary
        let snap3 = value["hall3"] as? NSDictionary
        image = snap?["qwerty"] as? String ?? ""
        image2 = snap2?["qwerty"] as? String ?? ""
        image3 = snap3?["qwerty"] as? String ?? ""
        if let post1 = snap as? [String: AnyObject] {
            for (_, value) in post1["images"] as! [String: AnyObject] {
                self.images.append(value as! String)
            }
        }
        if let post2 = snap2 as? [String: AnyObject] {
            for (_, value) in post2["images"] as! [String: AnyObject] {
                self.images2.append(value as! String)
            }
        }
        if let post3 = snap3 as? [String: AnyObject] {
            for (_, value) in post3["images"] as! [String: AnyObject] {
                self.images3.append(value as! String)
            }
        }
    }
}

在我的 collectionCell 中只加载了第一张图片,我基本可以理解为什么,据我所知,这是因为 sd_setImage 没有显示数组(如果我是正确的话)我错了),但是如何修复却无法理解。

collectionCell的代码

class CollectionViewCell11: UICollectionViewCell, UICollectionViewDelegate, UICollectionViewDataSource {

    var imagess: [Model] = []
    @IBOutlet weak var collectionView: UICollectionView!

    var vc1: ViewController?

    override func awakeFromNib() {
        super.awakeFromNib()

        collectionView.delegate = self
        collectionView.dataSource = self
    }

    func collectionView(_ collectionView: UICollectionView, numb  erOfItemsInSection section: Int) -> Int {
        return imagess.count
}
    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! CollectionViewCell12
        cell.imageView.sd_setImage(with: URL(string: imagess[indexPath.item].image))

        return cell
    }
    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
        if vc1 != nil {

            let vc2 = vc1!.storyboard?.instantiateViewController(withIdentifier: "ViewController2") as! ViewController2

            vc2.photo = [imagess[indexPath.item]]

            let backItem = UIBarButtonItem()
            backItem.title = ""
            vc1!.navigationItem.backBarButtonItem = backItem

            vc1!.navigationController?.pushViewController(vc2, animated: true)
        }
    }
}

要使用我只需要模型类,因为它包含另一个图像数组,我计划显示滚动图像的下一个控制器。

1 个答案:

答案 0 :(得分:0)

如果您的下一个ViewController是此单元格的子节点,那么您可以通过这种方式将数组传递给它。

您可以在下一个ViewController的viewDidLoad()中编写它:

var newImagesArray: [Model] = []
if let parentVC = self.parent as? CollectionViewCell11 {
    newImagesArray = parentVC.imagess 
}