尤里卡定制排

时间:2017-10-31 10:55:59

标签: eureka-forms

我试图在Eureka中创建一个自定义行,但我似乎无法找到一个好的指南(对于像我这样的新手)来指导我并让我明白如何去做。

基本上,我想使用XIB创建下面的行。它包含2个标签和一个图像。任何人都可以帮助我了解如何正确地做到这一点吗?

或者至少指出一个像我这样的新手可以理解如何实现这个目标的地方:

screenshot is here

谢谢。

1 个答案:

答案 0 :(得分:0)

这次我没有从社区得到太多的帮助,但我自己设法解决了,所以我会在这里为其他新手发布答案..

final class CartProductRow: Row<CartProductCell>, RowType {
    required init(tag: String?) {
        super.init(tag: tag)
        cellProvider = CellProvider<CartProductCell>(nibName: "CartProductCell")
    }
}

class CartProductCell: Cell<CartProduct>, CellType {

    @IBOutlet weak var productImage: UIImageView!
    @IBOutlet weak var productName: UILabel!

    required init(style: UITableViewCellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
    }

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

    override func setup() {
        super.setup()
        selectionStyle = .none

        productImage.contentMode = .scaleAspectFill
        productImage.clipsToBounds = true

        productName.font = .systemFont(ofSize: 18)

        for label in [productName] {
            label?.textColor = .gray
        }

        height = { return 97 }
    }

    func loadImage(url: String) {
        let url = URL(string:url)
        self.productImage.kf.indicatorType = .activity
        self.productImage.kf.setImage(with: url, options: [.transition(.fade(0.9))])
    }

    override func update() {
        super.update()
        textLabel?.text = nil

        guard let product = row.value else { return }
        if let url = product.smallImageUrl {
            loadImage(url: url)
        }

        productName.text = product.name
    }
}