2016-12-16 1 views
9

Ich mache damit, ich möchte CollectionView verwenden, aber ich habe Prototypzelle nicht gesehen, und weiß nicht, wie in diesem Fall CollectionView verwenden, kann mir jemand helfen?Verwenden von CollectionView in UIView mit Xib-Datei

Ich versuche, wie auf diese Weise zu verwenden, aber es viel Zeit und harte eingenommen haben, als UICollectionView

enter image description here

+0

prüfen dies: https: //www.appcoda.com/ios-Programmierung-uicollectionview-tutorial/ –

Antwort

20

Der Hauptweg UICollectionView zu verwenden ist durch die Logik programmatisch zu verwalten.

  1. Zuerst erstellen Sie eine neue Klasse, die von UICollectionViewCell erbt. Wählen Sie, ob Sie eine XIB hinzufügen möchten, um Ihre Zelle einfach zu gestalten: enter image description here

  2. Entwerfen Sie Ihre Zelle mit Interface Builder oder programmgesteuert.

  3. Erstellen Sie Ihren Hauptansicht-Controller einschließlich einer XIB (oder eines Storyboards) mit der Auflistungsansicht innerhalb und verknüpfen Sie sie über Interface Builder mit der zugehörigen Klasse. Alternativ können Sie auch eine Sammlung Ansicht programmatisch zu Ihrem UIViewController

enter image description here

hinzufügen
  1. Machen Sie die Ziel-View-Controller entsprechen die UICollectionViewDelegate und UICollectionViewDataSource Protokolle, die von ihnen nach der Deklaration Vater Klasse:

    class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource { 
    
        @IBOutlet weak var collectionView: UICollectionView! 
    
        //... 
    } 
    
  2. Registrieren Sie die zugehörige Feder oder die Klasse für Ihre Zelle im viewDidLoad Verfahren und die Datenquelle und delegieren Protokolle View-Controller-Klasse zuordnen:

    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. implementieren, um die deklarierten Methoden in den UICollectionViewDelegate und UICollectionViewDataSource Protokolle:

    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. Führen Sie Ihre Anwendung im Simulator (oder auf einem echten Gerät) und .. Et voilà! :)

enter image description here

Für weitere Informationen: https://developer.apple.com/reference/uikit/uicollectionview

+0

tks viel, es hat mir geholfen –

0

ok verwalten müssen Sie zuerst die IBOutlet Ihrer Sammlung Ansicht haben und implementiert die Methoden wie diese

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 


    } 

ok in der Funktion können Sie eine xib Datei hinzufügen, nächstes müssen Sie das von UICollectionViewCell erweitern schaffen, und wenn Sie diese beenden müssen Sie die nächsten Methoden außer Kraft setzen

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 
    } 

und das ist alles, viel Glück

Verwandte Themen