如何使用Swift在UICollectionView单元格中加载自定义单元格(xib)

我已经使用Swift创建了一个小示例项目。我创建了一个“ MyCustomView”作为xib,其中包含标签,按钮和imageView,如下面的代码所示:

import UIKit

@IBDesignable class MyCustomView: UIView {

    @IBOutlet weak var lblName: UILabel!
    @IBOutlet weak var btnClick: UIButton!
    @IBOutlet weak var myImageView: UIImageView!

    var view:UIView!

    @IBInspectable
    var mytitleLabelText: String? {
        get {
            return lblName.text
        }
        set(mytitleLabelText) {
            lblName.text = mytitleLabelText
        }
    }

    @IBInspectable
    var myCustomImage:UIImage? {
        get {
            return myImageView.image
        }
        set(myCustomImage) {
            myImageView.image = myCustomImage
        }
    }


    override init(frame : CGRect)
    {
        super.init(frame: frame)
        xibSetup()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        xibSetup()
    }


    func xibSetup()
    {
        view = loadViewFromNib()
        view.frame = self.bounds

        // not sure about this ?
        view.autoresizingMask = [UIViewAutoresizing.FlexibleWidth, UIViewAutoresizing.FlexibleHeight]
        addSubview(view)
    }


    func loadViewFromNib() -> UIView {

        let bundle = NSBundle(forClass: self.dynamicType)
        let nib = UINib(nibName: "MyCustomView", bundle: bundle)
        let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView

        return view
    }
}

附上xib的图像以供参考。 截屏

在StoryBoard-> ViewController中添加了UIViewCollection,如下图所示。在此viewcollection中,我需要该橙色单元格包含要在运行时加载的自定义xib。

我该如何实现?

在此处输入图片说明

Sandeep建议的新修改代码

// 1个导入UIKit

class ViewController: UIViewController {

    @IBOutlet weak var collectionView: UICollectionView!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.collectionView.register(UINib(nibName: "MyCustomView", bundle: nil), forCellWithReuseIdentifier: "myCell")

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 7
    }

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

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

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

        cell.lblName.text = "MyNewName"
        return cell
    }
}

// 2导入UIKit

@IBDesignable class MyCustomView: UICollectionViewCell {

    @IBOutlet weak var lblName: UILabel!
    @IBOutlet weak var btnClick: UIButton!
    @IBOutlet weak var myImageView: UIImageView!

    var view:UIView!

    @IBInspectable
    var mytitleLabelText: String? {
        get {
            return lblName.text
        }
        set(mytitleLabelText) {
            lblName.text = mytitleLabelText
        }
    }

    @IBInspectable
    var myCustomImage:UIImage? {
        get {
            return myImageView.image
        }
        set(myCustomImage) {
            myImageView.image = myCustomImage
        }
    }

}
桑迪普·班达里(Sandeep Bhandari)

这是您可以做的,

  1. 将您的MyCustomView更改为UICollectionViewCell的子类,而不是UIView。

  2. Remove override init(frame : CGRect),required init?(coder aDecoder: NSCoder),func xibSetup(),func loadViewFromNib() -> UIView from MyCustomView

  3. I seriously could not understand how are you using your setter and getter for mytitleLabelText and myCustomImage. If its of no use get rid of it as well.

  4. Finally you will be left with just IBOutlets in MyCustomView.

  5. For better coding practice change the name from MyCustomView to MyCustomCell (optional)

  6. Go to your xib, select the xib and set its class as MyCustomView.

在此处输入图片说明

  1. In the same screen change file owner to yourView controller hosting collectionView

在此处输入图片说明

  1. In ViewDidLoad of your viewController register your nib.
self.collectionView.registerNib(UINib(nibName: "your_xib_name", bundle: nil), forCellWithReuseIdentifier: "your_reusable_identifier")
  1. In cellForItemAtIndexPath,
let cell : MyCustomView = collectionView.dequeueReusableCellWithReuseIdentifier("your_reusable_identifier", forIndexPath: indexPath) as! MyCustomView
cell.lblName.text = "bla bla" //access your Cell's IBOutlets
return cell
  1. Finally in order to control the size of cell either override the delegate of collectionView or simply go to your collectionView select the collectionCell in it and drag it to match your dimension :) Thats it :)

快乐的编码。搜索教程以获得更好的理解。我无法解释所有代表,因为我最终将在这里写博客。

快乐编码

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Swift在UITableview中加载自定义单元格(Xib)

来自分类Dev

UITableViewController 不使用 xib 文件加载自定义单元格

来自分类Dev

如何使用自定义单元格大小来提高UICollectionView的性能?

来自分类Dev

UICollectionView-连接到自定义单元格

来自分类Dev

UICollectionView:在自定义单元格内更改sizeForItemAtIndexPath

来自分类Dev

UICollectionView自定义单元格布局

来自分类Dev

UICollectionview自定义流布局删除单元格

来自分类Dev

是否可以在加载视图的同时加载UICollectionView中的自定义单元格?

来自分类Dev

如何使NSTableView使用混合自定义单元格视图的自定义单元格视图?

来自分类Dev

自定义Xib单元格未出现在UITableView swift中

来自分类Dev

使用工厂模式在同一张表中加载不同的自定义单元格

来自分类Dev

UISearchController的自定义单元格

来自分类Dev

自定义单元格标签

来自分类Dev

自定义单元格重复

来自分类Dev

使用来自 xib 的自定义单元格在 UITableView 中动态行高

来自分类Dev

Swift自定义单元格布局TableView的决定

来自分类Dev

iOS Swift自定义单元格NavigationController

来自分类Dev

Swift 自定义单元格以适应屏幕宽度

来自分类Dev

单击UICollectionView中的自定义单元格时如何触发segue

来自分类Dev

如何自定义单元格背景

来自分类Dev

如何自定义选定单元格的颜色?

来自分类Dev

使用自定义单元格创建多个部分

来自分类Dev

使用自定义单元格获取UITableViewCell indexPath

来自分类Dev

可重复使用的自定义单元格

来自分类Dev

使用自定义单元格从搜索更新tableView

来自分类Dev

使用UIView的自定义表格视图单元格

来自分类Dev

iOS Swift-加载自定义表格单元格

来自分类Dev

UICollectionView自定义大小自定义单元格

来自分类Dev

Swift:TableView(单元格内)未在 cellForRowAt 中加载单元格或代码

Related 相关文章

  1. 1

    如何使用Swift在UITableview中加载自定义单元格(Xib)

  2. 2

    UITableViewController 不使用 xib 文件加载自定义单元格

  3. 3

    如何使用自定义单元格大小来提高UICollectionView的性能?

  4. 4

    UICollectionView-连接到自定义单元格

  5. 5

    UICollectionView:在自定义单元格内更改sizeForItemAtIndexPath

  6. 6

    UICollectionView自定义单元格布局

  7. 7

    UICollectionview自定义流布局删除单元格

  8. 8

    是否可以在加载视图的同时加载UICollectionView中的自定义单元格?

  9. 9

    如何使NSTableView使用混合自定义单元格视图的自定义单元格视图?

  10. 10

    自定义Xib单元格未出现在UITableView swift中

  11. 11

    使用工厂模式在同一张表中加载不同的自定义单元格

  12. 12

    UISearchController的自定义单元格

  13. 13

    自定义单元格标签

  14. 14

    自定义单元格重复

  15. 15

    使用来自 xib 的自定义单元格在 UITableView 中动态行高

  16. 16

    Swift自定义单元格布局TableView的决定

  17. 17

    iOS Swift自定义单元格NavigationController

  18. 18

    Swift 自定义单元格以适应屏幕宽度

  19. 19

    单击UICollectionView中的自定义单元格时如何触发segue

  20. 20

    如何自定义单元格背景

  21. 21

    如何自定义选定单元格的颜色?

  22. 22

    使用自定义单元格创建多个部分

  23. 23

    使用自定义单元格获取UITableViewCell indexPath

  24. 24

    可重复使用的自定义单元格

  25. 25

    使用自定义单元格从搜索更新tableView

  26. 26

    使用UIView的自定义表格视图单元格

  27. 27

    iOS Swift-加载自定义表格单元格

  28. 28

    UICollectionView自定义大小自定义单元格

  29. 29

    Swift:TableView(单元格内)未在 cellForRowAt 中加载单元格或代码

热门标签

归档