我有一个具有表格视图的应用程序。在此表视图中,我目前有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文件是否都可以具有与此父级文件相同的输出口,怎么办?
答案 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
}
}