我正在为静态表视图构建一个库,它工作正常,但我遇到了泛型闭包的问题。
到目前为止看起来像这样:
orderForm = Form(tableView: orderTable) { f in
f.section { s in
s.footer("Při platbě nejsou účtovány žádné další poplatky.")
s.cell("Selection")
.configure { (cell, path) in
let c = cell as! ProfileSelectionCell
c.titleLabel?.text = "Způsob platby"
c.detailLabel?.text = self.paymentType.first
}
s.cell("Selection")
.configure { (cell, path) in
let c = cell as! ProfileSelectionCell
c.titleLabel?.text = "Balíček"
c.detailLabel?.text = "20 kr. za 1000 Kc"
}.selected { path in
}
}
}
我想将“cell”变量转换为适当的类型,在本例中为ProfileSelectionCell。
以下是单元格类的来源:
class Cell {
internal let id: String
internal var configure: ((cell: UITableViewCell, path: NSIndexPath) -> Void)?
internal var selected: ((path: NSIndexPath) -> Void)?
init(id: String) {
self.id = id
}
func configure(config: ((cell: UITableViewCell, path: NSIndexPath) -> Void)?) -> Self {
self.configure = config
return self
}
func selected(selected: (path: NSIndexPath) -> Void) -> Self {
self.selected = selected
return self
}}
我的问题是,如果我使配置方法通用,则无法将配置闭包存储到单元格变量,如果我使整个单元格通用,我无法将单元格保存到Section类中的数组等等..
这可以解决吗?
答案 0 :(得分:1)
您可以将Cell
类设为通用类,例如
class Cell<T : UITableViewCell> {
}
然后使用T
代替每个UITableViewCell
。
不幸的是,您必须同时在Section
和Form
类中使用相同的内容。这适用于具有一种类型单元格的表格,但它不适用于具有多种单元格类型的表格。在这种情况下,你总是需要在某处投射。