簡體   English   中英

如何在一個View Controller中擁有多個Collection View?

[英]How can I have multiple Collection Views in one View Controller?

我希望一個View Controller具有七個水平按鈕滾動。 我已經設置了第一個“集合視圖”,並且直接在其下面重復了第二個“集合視圖”的確切過程,但是我一直收到線程1:SIGABRT錯誤。 我的功能集合視圖代碼在這里:

class xyViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {

var tableImages: [String] = ["1.png", "2.png", "3.png", "4.png", "5.png", "6.png"]

override func viewDidLoad() {
    // Initialize the collection views, set the desired frames
}   
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return tableImages.count
}

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

    let cell:xyCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! xyCollectionViewCell

    cell.xyImgCell.image = UIImage(named: tableImages[indexPath.row])

    return cell
}

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
    println("cell \(indexPath.row) selected")
}   

}

當我運行它時,它起作用。

因此,當我在下面添加第二個Collection View時,將新的View Controller文件創建到IBOutlet按鈕的圖像,並創建一個新的Collection View Cell文件以添加以下代碼,它將崩潰。

class bwViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {

var bwTableImages: [String] = ["a", "PlasmaBlast.png", "b.png", "c.png", "d.png", "e.png", "f.png", "g.png", "h.png", "i.png", "j.png"]

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return bwTableImages.count
}

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

let cell:bwCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("cell1", forIndexPath: indexPath) as! bwCollectionViewCell

cell.bwImgCell.image = UIImage(named: bwTableImages[indexPath.row])

return cell
}

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
println("cell \(indexPath.row) selected")
}
}

這是您編寫的代碼的兩部分版本。 我不確定它是否解決了您所看到的錯誤,但是這是您在一頁上執行多個集合視圖的方式。

class xyViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate {

    var tableImagesOne: [String] = ["1.png", "2.png", "3.png", "4.png", "5.png", "6.png", "7.png", "8.png"]
    var tableImagesTwo: [String] = ["1.png", "2.png", "3.png", "4.png", "5.png"]

    override func viewDidLoad() {
        // Initialize the collection views, set the desired frames
    }


    func numberOfSectionsInCollectionView(_ collectionView: UICollectionView) -> Int {
        return 2
    }

    func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        if section == 0 {
            return tableImagesOne.count
        }
        else {
            return tableImagesTwo.count
        }
    }

    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

        let row = indexPath.row
        let section = indexPath.section

        let cell:xyCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! xyCollectionViewCell

        if section == 0 {
            cell.xyImgCell.image = UIImage(named: tableImagesOne[row])
        }
        else if section == 1 {
            cell.xyImgCell.image = UIImage(named: tableImagesTwo[row])
        }
        return cell
    }

    func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {
        println("cell \(indexPath.section) : \(indexPath.row) selected")
    }   

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM