在UIView中使用CollectionView和xib文件

Tha*_*Hải 15 uiview collectionview ios uicollectionview swift

我正在做这个,我想使用CollectionView,但我还没有看过原型单元格,并且在这种情况下不知道如何使用CollectionView,有人可以帮助我吗?

我尝试使用这种方式,但它比UICollectionView需要大量的时间和管理

在此输入图像描述

Nic*_*chi 33

使用UICollectionView的主要方法是以编程方式管理逻辑.

  1. 首先,创建一个继承自的新类UICollectionViewCell.选择是否要包含xib以轻松设计单元格: 在此输入图像描述

  2. 使用Interface Builder或以编程方式设计单元.

  3. 创建主视图控制器,包括带有集合视图的xib(或故事板),并通过Interface Builder将其链接到关联的类.或者,您可以以编程方式将集合视图添加到您的UIViewController

在此输入图像描述

  1. 通过在父类之后声明它们来使目标视图控制器符合UICollectionViewDelegateUICollectionViewDataSource协议:

    class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {
    
        @IBOutlet weak var collectionView: UICollectionView!
    
        //...
    } 
    
    Run Code Online (Sandbox Code Playgroud)
  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
     }
    
    Run Code Online (Sandbox Code Playgroud)
  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
     }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 在模拟器中(或在真实设备上)运行您的应用程序和...évoilà!:)

在此输入图像描述

有关详细信息,请访问:https://developer.apple.com/reference/uikit/uicollectionview

  • 不,问题是:如果将 UICollectionView 添加到 .xib 文件,为什么 UICollectionView 没有任何工具可以在 Interface Builder 中添加单元格 (2认同)