有
var tableView: MyTableView?
tableView?.onGoToA = {
self.goToA()
}
tableView?.onGoToB = {
self.goToB()
}
tableView?.onGoToC = {
self.goToC()
}
在这种情况下是否有更好的方法,还是仅使用委托更好?
答案 0 :(得分:3)
如果可能的情况有限,我将使用以枚举作为参数的单个闭包,并使用切换用例来确定触发哪种方法
如果每个事件都有一个与之关联的值,那么您也可以利用具有关联值的枚举:)
示例:
enum EventType {
case toA
case toB
case toC
}
将您的关闭声明为
var routerBlock: ((EventType) -> ())? = nil
最后将路由器模块实现为
tableView?.routerBlock = {[weak self] (eventType) in
switch eventType {
case .toA:
self?.gotoA()
case .toB:
self?.goToB()
case .toC:
self?.goToC()
}
}
您也可以对委托使用类似的方法。除了拥有3个委托方法,您可以拥有一个采用EventType
并具有相同的开关块来决定触发哪种方法的方法
希望这会有所帮助