Advertisement
Guest User

Obj-C protocol oriented approach

a guest
Apr 28th, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #import <UIKit/UIKit.h>
  2.  
  3. typedef void (^MSTDismissCallback)(void);
  4.  
  5. @protocol MSTDismissWithCallbackProtocol <NSObject>
  6.  
  7. @optional
  8. @property (nonatomic, copy) MSTDismissCallback dismissCallback;
  9. - (void) injectCallback:(MSTDismissCallback) dismissCallback;
  10. - (void) dismissViewControllerWithCallback;
  11.  
  12. @end
  13.  
  14. @interface UIViewController (DismissCallback) <MSTDismissWithCallbackProtocol>
  15.  
  16. @property (nonatomic, copy) MSTDismissCallback dismissCallback;
  17.  
  18. - (void) injectCallback:(MSTDismissCallback) dismissCallback;
  19. - (void) dismissViewControllerWithCallback;
  20.  
  21. @end
  22.  
  23. @implementation UIViewController (DismissCallback)
  24.  
  25. @dynamic dismissCallback;
  26.  
  27. - (void) injectCallback:(MSTDismissCallback) dismissCallback {
  28.   self.dismissCallback = dismissCallback;
  29. }
  30.  
  31. - (void) dismissViewControllerWithCallback {
  32.   od_weakify(self)
  33.   [self dismissViewControllerAnimated:true completion:^{
  34.     od_strongify(self)
  35.     if (self.dismissCallback != nil) {
  36.       self.dismissCallback();
  37.     }
  38.   }];
  39. }
  40.  
  41. @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement