来自UICollectionViewCell内的Class对象的UITableView dataSource

时间:2017-01-03 15:56:12

标签: ios swift uitableview uicollectionview swift3

我希望allItems中每个对象的每个inventory都显示在每一行中。就像现在一样,在我编写indexPathOfCollectionView的地方,有一个0来看它实际上是在工作,但是我不知道我应该写哪个变量才能看到每个allItems inventory来自var inventory = [Item]() class Item { var name: String! var allItems: [String]! init(name: String, allItems: [String]) { self.name = name self.allItems = allItems } } 的1}}。

class ItemCollectionViewCell: UICollectionViewCell, UITableViewDelegate, UITableViewDataSource {

    var inventory = [Item]()

    @IBOutlet weak var testTableView: UITableView!
    @IBOutlet weak var nameLabel: UILabel!

    func configureCell(_ inventory: Item) {

        nameLabel.text = inventory[indexPath.row]
        testTableView.dataSource = self

    }


    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return inventory[indexPathOfCollectionView*].allItems.count
    }

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        var cell: UITableViewCell? = tableView.dequeueReusableCell(withIdentifier: "ItemsCell")

    if(cell == nil){
        cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "ItemsCell")
    }

        cell.textLabel?.text = inventory[indexPathOfCollection*].allItems[indexPath.row]

        return cell
    }
}

收集细胞:

viewController

这是 class VC: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource { func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return inventory.count } func numberOfSections(in collectionView: UICollectionView) -> Int { return 1 } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionCellItem", for: indexPath) as! ItemCollectionViewCell let it: Item! it = inventory[indexPath.row] cell.configureCell(it) return cell } }

numpy.ndarray

以下是我所拥有的screenshot

1 个答案:

答案 0 :(得分:1)

据我所知,从您的班级Item移除Inventory数组,因为您的模型不需要 。它应该与UIViewController一起出现。进行以下更改应该使您的代码按要求运行!

将您的UIViewController更改为 -

class VC: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {

    var inventory = [Item]()

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

         return inventory.count
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CollectionCellItem", for: indexPath) as! ItemCollectionViewCell

        //Just pass the model inside of the array!
        cell.itemsList = inventory[indexPath.item]

        cell.configureCell()

        return cell
    }
}

UICollectionViewCell

class ItemCollectionViewCell: UICollectionViewCell, UITableViewDelegate, UITableViewDataSource {

    var itemsList : Item!

    @IBOutlet weak var testTableView: UITableView!
    @IBOutlet weak var nameLabel: UILabel!

    override func awakeFromNib() {

         super.awakeFromNib()

         testTableView.dataSource = self
    }

    func configureCell() {

        testTableView.reloadData()
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return itemsList.allItems.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        var cell: UITableViewCell? = tableView.dequeueReusableCell(withIdentifier: "ItemsCell")

        if(cell == nil){

             cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "ItemsCell")
        }

        //get array of strings from inside that particular model!
        cell.textLabel?.text = itemsList.allItems[indexPath.row]

        return cell
    }
}