具有ios中常见功能的自定义单元格

时间:2018-08-04 11:14:44

标签: ios uitableview tableview custom-cell

我有一个具有表格视图的应用程序。在此表视图中,我目前有8种不同类型的单元格。这些单元中的每一个都不同,但也有相似之处。

作为示例(为简单起见,仅使用2个单元格)。假设您有一个单元格1,该单元格可以分为3部分:

-------------- A -------------- -------------- B -------------- -------------- C --------------

现在单元格2也有3个部分。 A和C部分与cell1中的相同(当然,数据不同,但结构相同):

-------------- A -------------- -------------- D -------------- -------------- C --------------

当前,在我的cellForRowAt方法中,我只是检查单元格类型应为1还是2,然后为该类型的单元格出队。面临的挑战是,我想避免在代码中将A部分和C部分设置为两个不同的位置。

例如。代替

if type == type1 {
    //Set A
    //Set B
    //Set C
} else if type == type2 {
    //Set A
    //Set D
    //Set C
}

我想要

//Set A
//Set C
if type == type1 {
    //Set B
} else if type == type2 {
    //Set D
}

我想知道是否有一种方法可以“抽象”这些共同点?

请让我知道是否有任何不清楚的地方。

编辑:IB挑战

我可能还应该提到,对我来说,一个棘手的部分是弄清楚母体细胞如何适应IB。对于每种单元格类型,我都有单独的xib文件,但是,如果我只有一个父级swift文件的A和C部分,那么我的其他xib文件是否都可以具有与此父级文件相同的输出口,怎么办?

1 个答案:

答案 0 :(得分:0)

Parent TableViewCell

class BaseTableViewCell: UITableViewCell {

  @IBOutlet weak var ALabel: UILabel!
  @IBOutlet weak var CLabel: UILabel!

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
        // Configure the view for the selected state
    }

}

Subclass of BaseCell

class TypeOneTableViewCell: BaseTableViewCell {

  @IBOutlet weak var BLabel: UILabel!

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}

enter image description here

enter image description here