//
// UIApplication+categate.m
//
//
// Created by CJW on 16/6/30.
// Copyright © 2016年 CJW. All rights reserved.
//
#import "UIApplication+Swizle.h"
@implementation UIApplication (categate)
+ (void)load
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
Class class = [UIApplication class];
Method Method = class_getInstanceMethod(class, @selector(setApplicationIconBadgeNumber:));
Method swizzl = class_getInstanceMethod(class, @selector(xc_setApplicationIconBadgeNumber:));
method_exchangeImplementations(Method, swizzl);
});
}
- (void)xc_setApplicationIconBadgeNumber:(NSInteger)number
{
[self xc_setApplicationIconBadgeNumber:number];
//获取当前VC
UITabBarController *tabVC = [UIViewController CJWGetCurrentVC];
if (![tabVC isKindOfClass:UITabBarController.class])
{
return;
}
UITabBarItem *item = tabVC.tabBar.items[0];
if (number == 0)
{
item.badgeValue = nil;
}else
{
if (number >= 99)
{
item.badgeValue = [NSString stringWithFormat:@"%@", @"99+"];
}else
{
item.badgeValue = [NSString stringWithFormat:@"%ld", (long)number];
}
}
}
@end
//
// UIApplication+categate.m
//
//
// Created by CJW on 16/6/30.
// Copyright © 2016年 CJW. All rights reserved.
//
#import "NSString+CJW.h"
@implementation UIViewController (CJWUserDefine)
//获取当前的VC。
+(__kindof UIViewController*)CJWGetCurrentVC
{
UIViewController *result = nil;
UIWindow * window = [[UIApplication sharedApplication] keyWindow];
if (window.windowLevel != UIWindowLevelNormal)
{
NSArray *windows = [[UIApplication sharedApplication] windows];
for(UIWindow * tmpWin in windows)
{
if (tmpWin.windowLevel == UIWindowLevelNormal)
{
window = tmpWin;
break;
}
}
}
if ([window subviews].count == 0)
{
return nil;
}
UIView *frontView = [[window subviews] objectAtIndex:0];
id nextResponder = [frontView nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]])
result = nextResponder;
else
result = window.rootViewController;
return result;
}
+ (UINavigationController *)getCurrentNavigationController
{
UIViewController *result = [UIViewController CJWGetCurrentVC];
if ([result isKindOfClass:[UITabBarController class]])
{
UINavigationController *navi = ((UITabBarController*)result).selectedViewController;
if ([navi isKindOfClass:UINavigationController.class])
{
result = navi;
}
else if ([navi isKindOfClass:[UIViewController class]])
result = result.navigationController;
}
else if ([result isKindOfClass:[UINavigationController class]])
{
}
else if ([result isKindOfClass:[UIViewController class]])
result = result.navigationController;
return result;
}
@end