ios – Swift通用闭包

我正在为静态表视图构建一个库,它工作正常,但我遇到了通用闭包的问题.

到目前为止看起来像这样:

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
}}

我的问题是,如果我使配置方法通用,不可能将配置闭包存储到单元格变量,如果我使整个单元格通用,我不能将单元格保存到节类中的数组,依此类推..

这可以解决吗?

解决方法

您可以使Cell类通用,例如

class Cell<T : UITableViewCell> {
}

然后使用T代替每个UITableViewCell.

不幸的是,你也必须在Section和Form类中拥有相同的功能.这适用于具有一种类型单元格的表格,但它不适用于具有多种单元格类型的表格.在这种情况下,你总是需要在某处施放.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...