ios - 同一对象中多个事件的委托或关闭
问题描述
有
var tableView: MyTableView?
tableView?.onGoToA = {
self.goToA()
}
tableView?.onGoToB = {
self.goToB()
}
tableView?.onGoToC = {
self.goToC()
}
对于这种情况有更好的方法还是只使用委托的更好方法?
解决方案
如果您的可能情况有限,我将有一个以枚举作为参数的闭包,并将有一个 switch case 来决定触发哪个方法
如果每个事件都有一个与之关联的值,您也可以利用具有关联值的枚举:)
例子:
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
并具有相同的 switch 块来决定触发哪个方法
希望这可以帮助
推荐阅读
- angular - 在 Angular 5 TypeScript 中触发 keyup 事件
- java - 在 Java 中设置 CLASSPATH 的目的是什么?
- javascript - 使用innerHtml从javascript在ul中添加ul
- java - 当嵌入 Spring Boot 时,支持我的 SQL 的 Apache Ignite 无法以客户端模式启动 - 显示配置不匹配
- linux - 在同一行的两个位置使用 sed 或 awk 从多行中删除模式
- python - pandas:当值是可变长度的集合或列表时,从字典创建一个长/整齐的 DataFrame
- php - 在php中检测呼叫并显示来自星号的弹出窗口
- plsql - 删除父表中的记录并更新子表中的“DELETED”列
- java - 如何在java中按字母顺序对字符串列表进行排序?
- python - Python - 如何自动编辑类对象值?