BABaseProject/BAMainCode/BATools(工具类)/BAKit(工具类)/UIKit/UINavigationController+BAKit.m

/*!
 *  @header BAKit.h
 *          BABaseProject
 *
 *  @brief  BAKit
 *
 *  @author 博爱
 *  @copyright    Copyright © 2016年 博爱. All rights reserved.
 *  @version    V1.0
 */

//                            _ooOoo_
//                           o8888888o
//                           88" . "88
//                           (| -_- |)
//                            O\ = /O
//                        ____/`---'\____
//                      .   ' \\| |// `.
//                       / \\||| : |||// \
//                     / _||||| -:- |||||- \
//                       | | \\\ - /// | |
//                     | \_| ''\---/'' | |
//                      \ .-\__ `-` ___/-. /
//                   ___`. .' /--.--\ `. . __
//                ."" '< `.___\_<|>_/___.' >'"".
//               | | : `- \`.;`\ _ /`;.`/ - ` : | |
//                 \ \ `-. \_ __\ /__ _/ .-` / /
//         ======`-.____`-.___\_____/___.-`____.-'======
//                            `=---='
//
//         .............................................
//                  佛祖镇楼                  BUG辟易
//          佛曰:
//                  写字楼里写字间，写字间里程序员；
//                  程序人员写程序，又拿程序换酒钱。
//                  酒醒只在网上坐，酒醉还来网下眠；
//                  酒醉酒醒日复日，网上网下年复年。
//                  但愿老死电脑间，不愿鞠躬老板前；
//                  奔驰宝马贵者趣，公交自行程序员。
//                  别人笑我忒疯癫，我笑自己命太贱；
//                  不见满街漂亮妹，哪个归得程序员？

/*
 
 *********************************************************************************
 *
 * 在使用BAKit的过程中如果出现bug请及时以以下任意一种方式联系我，我会及时修复bug
 *
 * QQ     : 可以添加ios开发技术群 479663605 在这里找到我(博爱1616【137361770】)
 * 微博    : 博爱1616
 * Email  : 137361770@qq.com
 * GitHub : https://github.com/boai
 * 博客园  : http://www.cnblogs.com/boai/
 * 博客    : http://boai.github.io
 
 *********************************************************************************
 
 */

#import "UINavigationController+BAKit.h"

static char shadowViewkey;
@implementation UINavigationController (BAKit)

- (UIImageView *)nav_shadowView
{
    return objc_getAssociatedObject(self, &shadowViewkey);
}

- (void)setNav_shadowView:(UIImageView *)nav_shadowView
{
    objc_setAssociatedObject(self, &shadowViewkey, nav_shadowView, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}

- (void)ba_showNavShadowView
{
    self.nav_shadowView.hidden = NO;
}

- (void)ba_hiddenNavShadowView
{
    self.nav_shadowView.hidden = YES;;
}

- (void)ba_popBackViewControllerCount:(NSInteger)backCount
{
    UIViewController *vc = [self ba_controllerByPopCount:backCount];
    if (vc != nil)
    {
        [self popToViewController:vc animated:YES];
    }
}

- (UIViewController *)ba_controllerByPopCount:(NSInteger)count
{
    __block UIViewController *vc = nil;
    NSInteger totalCount = self.viewControllers.count;
    [self.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        if (totalCount - 1 - idx == count)
        {
            vc = obj;
            *stop = YES;
        }
    }];
    return vc;
}

/**
 *  返回到指定的类视图
 *
 *  @param ClassName 类名
 *  @param animated  是否动画
 */
- (void)ba_popToAppointViewController:(NSString *)ClassName animated:(BOOL)animated
{
    id vc = [self ba_getCurrentViewControllerClass:ClassName];
    if(vc != nil && [vc isKindOfClass:[UIViewController class]])
    {
        [self popToViewController:vc animated:animated];
    }
}

/*!
 *  获得当前导航器显示的视图
 *
 *  @param ClassName 要获取的视图的名称
 *
 *  @return 成功返回对应的对象，失败返回nil;
 */
- (instancetype)ba_getCurrentViewControllerClass:(NSString *)ClassName
{
    Class classObj = NSClassFromString(ClassName);
    
    NSArray * szArray =  self.viewControllers;
    for (id vc in szArray) {
        if([vc isMemberOfClass:classObj])
        {
            return vc;
        }
    }
    return nil;
}


@end
