Skip to content

Instantly share code, notes, and snippets.

@skyylex
Last active October 11, 2015 09:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save skyylex/202b1b640de8e4c43937 to your computer and use it in GitHub Desktop.
Save skyylex/202b1b640de8e4c43937 to your computer and use it in GitHub Desktop.
ReactiveCocoa-way to present UIViewControllers
@implementation UIViewController (RAC)
- (RACCommand *)showCommandWithPresenter:(RACSignal *)presenter {
RACSignal *presentedControllerDataSignal = [RACSignal return:self];
return [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) {
RACSignal *presentDataSignal = [presenter combineLatestWith:presentedControllerDataSignal];
return [presentDataSignal.deliverOnMainThread flattenMap:^RACStream *(RACTuple *tuple) {
return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
UIViewController *presenterController = tuple.first;
UIViewController *controllerToPresent = tuple.second;
[presenterController presentViewController:controllerToPresent animated:YES completion:^{
[subscriber sendNext:[RACUnit defaultUnit]];
[subscriber sendCompleted];
}];
return nil;
}];
}];
}];
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment