Advertisement
Guest User

Untitled

a guest
Mar 30th, 2017
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.61 KB | None | 0 0
  1. #import <UIKit/UIKit.h>
  2.  
  3. #pragma mark Catalog Property Synthesize Support
  4. #import <objc/runtime.h>
  5. #define SYNTHESIZE_CATALOG_OBJ_PROPERTY(propertyGetter, propertySetter)
  6. - (id) propertyGetter {
  7. return objc_getAssociatedObject(self, @selector( propertyGetter ));
  8. }
  9. - (void) propertySetter (id)obj{
  10. objc_setAssociatedObject(self, @selector( propertyGetter ), obj, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
  11. }
  12.  
  13.  
  14. #define SYNTHESIZE_CATALOG_VALUE_PROPERTY(valueType, propertyGetter, propertySetter)
  15. - (valueType) propertyGetter {
  16. valueType ret = {0};
  17. [objc_getAssociatedObject(self, @selector( propertyGetter )) getValue:&ret];
  18. return ret;
  19. }
  20. - (void) propertySetter (valueType)value{
  21. NSValue *valueObj = [NSValue valueWithBytes:&value objCType:@encode(valueType)];
  22. objc_setAssociatedObject(self, @selector( propertyGetter ), valueObj, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
  23. }
  24.  
  25. @interface UIViewController (NavigationBar)
  26. @property(nonatomic,assign) BOOL needBarHide;
  27. - (BOOL)checkPreviousControllerHideFlagInViewWillDisappear;
  28. @end
  29.  
  30. @implementation UIViewController (NavigationBar)
  31. SYNTHESIZE_CATALOG_VALUE_PROPERTY(BOOL, needBarHide, setNeedBarHide:)
  32.  
  33. - (BOOL)checkPreviousControllerHideFlagInViewWillDisappear
  34. {
  35. BOOL lastVCFlag = [self.navigationController.viewControllers lastObject].needBarHide;
  36. return lastVCFlag;
  37. }
  38. @end
  39.  
  40. @implementation RedViewController
  41.  
  42. - (instancetype)initWithCoder:(NSCoder *)aDecoder
  43. {
  44. self = [super initWithCoder:aDecoder];
  45. if (self)
  46. {
  47. self.needBarHide = YES;
  48. }
  49. return self;
  50. }
  51.  
  52. - (instancetype) initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
  53. {
  54. self = [super initWithNibName:nibNameOrNil bundle:nil];
  55. if (self)
  56. {
  57. self.needBarHide = YES;
  58. }
  59. return self;
  60. }
  61.  
  62.  
  63. - (void)viewWillAppear:(BOOL)animated
  64. {
  65. [super viewWillAppear:animated];
  66. [self.navigationController setNavigationBarHidden:YES animated:YES];
  67. self.delegateObject = self.navigationController.interactivePopGestureRecognizer.delegate;
  68. self.navigationController.interactivePopGestureRecognizer.delegate = self;
  69. }
  70.  
  71. - (void)viewWillDisappear:(BOOL)animated
  72. {
  73. [super viewWillDisappear:animated];
  74.  
  75. BOOL hide = [self checkPreviousControllerHideFlagInViewWillDisappear];
  76. [self.navigationController setNavigationBarHidden:hide animated:YES];
  77. NSLog(@"red viewWillDisappear hide:%d",hide);
  78.  
  79. self.navigationController.interactivePopGestureRecognizer.delegate = self.delegateObject;
  80. }
  81.  
  82. @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement