Created
April 11, 2016 07:53
-
-
Save orkenstein/a4303673979d13f7b939fb3aae596c6f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//------------------------------------------------------------------------------ | |
// 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