ios - uitableviewcell - uicollectionviewcell constraints




在UIView中用xib文件使用CollectionView (2)

我正在做這個,我想使用CollectionView,但我還沒有看到原型單元格,並不知道如何使用CollectionView在這種情況下,有人可以幫我嗎?

我嘗試像這樣使用,但比UICollectionView花費很多時間和難於管理


使用UICollectionView的主要方法是通過編程管理邏輯。

  1. 首先,創建一個從UICollectionViewCell繼承的新類。 選擇是否要包含一個xib來輕鬆設計您的單元格:

  2. 使用Interface Builder或以編程方式設計您的單元格。

  3. 創建你的主視圖控制器包括一個xib(或一個故事板) 集合視圖裡面,並通過接口生成器將其鏈接到相關的類。 或者,你可以添加一個集合視圖編程到你的UIViewController

  1. 通過在父類之後聲明它們,使目標視圖控制器符合UICollectionViewDelegateUICollectionViewDataSource協議:

    class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {
    
        @IBOutlet weak var collectionView: UICollectionView!
    
        //...
    } 
  2. viewDidLoad方法中註冊關聯的nib或單元的類,並將數據源和委託協議關聯到視圖控制器類:

     let cellIdentifier = "cellIdentifier"
    
     override func viewDidLoad() {
         super.viewDidLoad()
         //if you use xibs:
          self.collectionView.register(UINib(nibName:"MyCollectionCell", bundle: nil), forCellWithReuseIdentifier: cellIdentifier)
         //or if you use class:
          self.collectionView.register(MyCollectionCell.self, forCellWithReuseIdentifier: cellIdentifier)
    
          self.collectionView.delegate = self
          self.collectionView.dataSource = self
     }
  3. 實現在UICollectionViewDelegateUICollectionViewDataSource協議中聲明的方法:

     let objects = ["Cat", "Dog", "Fish"]
    
     func numberOfSections(in collectionView: UICollectionView) -> Int {
           return 1
     }
    
     func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
           return self.objects.count
     }
    
     func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    
           let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellIdentifier, for: indexPath) as! MyCollectionCell
    
           //in this example I added a label named "title" into the MyCollectionCell class
           cell.title.text = self.objects[indexPath.item]
    
           return cell
     }
  4. 在模擬器(或在真實的設備上)運行你的應用程序和..等voilà! :)

欲了解更多信息: https//developer.apple.com/reference/uikit/uicollectionview


確定首先,您必須擁有您的集合視圖的IBOutlet並實現像這樣的方法

class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource,UICollectionViewDelegateFlowLayout{



    @IBOutlet var collectionView: UICollectionView!

    override func viewDidLoad() {

        super.viewDidLoad()
        count = 9;
        let nib = UINib(nibName: "yourItemView", bundle: nil)
        collectionView.registerNib(nib, forCellWithReuseIdentifier: "yourItemView")
        self.collectionView.delegate = self
        self.collectionView.dataSource = self


    }

確定在添加一個xib文件的函數中,接下來你必須創建從UICollectionViewCell擴展的,當你完成這個時你必須重寫下一個方法

func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return count 
        // the numbers of items
    }

    func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {//size of your item for screen sizes
        let wsize = UIScreen.mainScreen().bounds.size.width
        switch(wsize){
        case 414:
            return CGSize(width: 190, height: 102)
        case 375:
            return CGSize(width: 190, height: 102)
        case 320:
            return CGSize(width: 174, height: 102)
        default:
            return CGSize(width: 174, height: 102)
        }
    }



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

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



        return cell
    }

這是一切,祝你好運





collectionview