MulticastDelegateKit 1.0.1

MulticastDelegateKit 1.0.1

Alex Kisel维护。



  • Alex Kisel

Build Status Version License Platform

用Swift 4.2编写的多播委托框架。

特性

特性
🎭 为自定义类添加多播委托
🚴 具有多播委托属性的UIKit控件子类(目前仅适用于UITableView)
🚀 使用responsibleForSelectors函数管理哪个性委托负责 UIKit 控件的返回值

示例

要运行示例项目,请首先克隆仓库,然后从示例目录运行pod install

UITableView示例

let tableView = MultidelegateTableView()
tableView.multiDelegate.add(delegate: self)

自定义类示例

protocol FooClassDelegate {
  func fooEvent()
}

class FooClass {
  var multicastDelegate = MulticastDelegate<FooClassDelegate>()
  
  func foo() {
    multicastDelegate.invoke { delegate in
      delegate.fooEvent()
    }
  }
}

class BarClass: FooClassDelegate {
  var foo = FooClass()
  var baz = BazClass()
  
  init() {
    foo.multicastDelegate.add(delegate: self)
    foo.multicastDelegate.add(delegate: baz)
  }
  
  func fooEvent() {
    
  }
}

class BazClass: FooClassDelegate {
  
  func fooEvent() {
    
  }
}

负责 selectors 示例

一些委托方法可以返回值。因此,当有几个委托时,我们需要一个机制来管理哪一个委托负责返回值。只有一个委托应该负责返回值,其他的委托是听众。

class FooClass: UITableViewDelegate, MulticastableDelegate {
  var tableView: MultidelegateTableView

  func setup() {
    tableView.multiDelegate.add(delegate: self)
  }

  func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 100
  }

  func responsableForSelectors() -> [String]? {
    return [#selector(tableView(_:heightForRowAt:)).description]
  }
}

需求

iOS 10.0+ Swift 4.0+

安装

通过CocoaPods可以获得MulticastDelegate。要安装它,只需将以下行添加到您的Podfile中

pod 'MulticastDelegateKit'

作者

亚历克斯·基塞尔,[email protected]

许可

MulticastDelegate 在MIT许可下可用。更多信息请参阅LICENSE文件。