JLChen
2021-11-04 1443556e9ccb1a19ed8e6710c16c8adc4d4f4fb3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
//
//  Copyright © 2019 jm. All rights reserved.
//
 
#import <LCBaseModule/UIViewController+Base.h>
#import <LCBaseModule/DHModuleConfig.h>
#import "UINavigationController+dh.h"
#import <LCBaseModule/LCBaseModule-Swift.h>
#import <objc/runtime.h>
 
@implementation UIViewController (Base)
 
- (BOOL)isTopController
{
    UIViewController *topController = self.navigationController.dh_topViewController;
    if ([topController isMemberOfClass:[self class]]) {
        return YES;
    }
    
    return NO;
}
 
- (BOOL)isInNavigationStack
{
    for (UIViewController *controller in self.navigationController.viewControllers) {
        if ([controller isEqual:self]) {
            return YES;
        }
    }
    return NO;
}
 
#pragma mark - 屏幕旋转
static const void *IsRotateLockedKey = &IsRotateLockedKey;
- (void)setIsRotateLocked:(BOOL)isRotateLocked{
 
    objc_setAssociatedObject(self, IsRotateLockedKey, [NSNumber numberWithBool:isRotateLocked], OBJC_ASSOCIATION_COPY);
    
}
 
- (BOOL)isRotateLocked {
    NSNumber *tempNum = objc_getAssociatedObject(self, IsRotateLockedKey);
    if (tempNum == nil){
        return NO;
    }
    return tempNum.boolValue;
}
 
#pragma mark - Rotate
- (void)lockRotate {
    self.isRotateLocked = YES;
}
 
- (void)unlockRotate {
    self.isRotateLocked = NO;
}
 
- (BOOL)dh_popToContollerByClass:(Class)cls {
    NSArray *statckControllers = self.navigationController.viewControllers;
    UIViewController *targetVc = nil;
    for (UIViewController *vc in statckControllers) {
        if ([vc isKindOfClass:cls]) {
            targetVc = vc;
            break;
        }
    }
    
    if (targetVc != nil) {
        [self.navigationController popToViewController:targetVc animated:YES];
        return YES;
    }
    
    return NO;
}
@end