Skip to content

Instantly share code, notes, and snippets.

@orkenstein
Created April 11, 2016 07:53
Show Gist options
  • Save orkenstein/a4303673979d13f7b939fb3aae596c6f to your computer and use it in GitHub Desktop.
Save orkenstein/a4303673979d13f7b939fb3aae596c6f to your computer and use it in GitHub Desktop.
//------------------------------------------------------------------------------
// MARK: ImagePicker
//------------------------------------------------------------------------------
class RxImagePickerDelegareProxy: DelegateProxy, ImagePickerDelegate, DelegateProxyType {
static func currentDelegateFor(object: AnyObject) -> AnyObject? {
let picker: ImagePickerController = object as! ImagePickerController
return picker.delegate
}
static func setCurrentDelegate(delegate: AnyObject?, toObject object: AnyObject) {
let picker: ImagePickerController = object as! ImagePickerController
picker.delegate = delegate as? ImagePickerDelegate
}
let doneButtonDidPressSubject = PublishSubject<[UIImage]>()
let wrapperDidPressSubject = PublishSubject<[UIImage]>()
let cancelButtonDidPressSubject = PublishSubject<Void>()
func wrapperDidPress(images: [UIImage]) {
doneButtonDidPressSubject.on(.Next(images))
self._forwardToDelegate?.wrapperDidPress?(images)
}
func doneButtonDidPress(images: [UIImage]) {
wrapperDidPressSubject.on(.Next(images))
self._forwardToDelegate?.doneButtonDidPress?(images)
}
func cancelButtonDidPress() {
cancelButtonDidPressSubject.on(.Next())
self._forwardToDelegate?.cancelButtonDidPress?()
}
}
extension ImagePickerController {
public var rx_delegate: DelegateProxy {
return proxyForObject(RxImagePickerDelegareProxy.self, self)
}
public var rx_wrapperDidPress: Observable<[UIImage]> {
return rx_delegate.observe(#selector(RxImagePickerDelegareProxy.wrapperDidPress(_:)))
.map { params in
return params[0] as! [UIImage]
}
}
public var rx_doneButtonDidPress: Observable<[UIImage]> {
let proxy = proxyForObject(RxImagePickerDelegateProxy.self, self)
// Value of type 'RxImagePickerDelegateProxy' has no member 'doneButtonDidPressSubject'
return proxy.doneButtonDidPressSubject
}
public var rx_cancelButtonDidPress: Observable<Void> {
return rx_delegate.observe(#selector(RxImagePickerDelegareProxy.cancelButtonDidPress))
.map { _ in return Void() }
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment