BaseViewController

@interface BaseViewController : UIViewController

@property (nonatomic,retain)NSMutableArray*dataSource;//数据集合 用于存储请求解析后的数据

@property (nonatomic,retain)NSMutableArray*secondarry;//数据集合 用于存储其他的数据

@property (nonatomic,retain)MydataModel *mydateModel;//存储用户信息

@property (nonatomic,retain)NSMutableArray *imagePathArray;//图片地址

@property (nonatomic,assign)BOOL keyboardIsVisible;//判断键盘是否弹出

@property (nonatomic,assign) long memID;

@property (nonatomic,assign) long isFouClient;

//@property (nonatomic,retain)

- (BOOL)isloginIn;//判断是登录;

- (void)ShowSVProgressHUD:(NSString *)text;//请求等待提示

- (void)DismissSVProgressHUD;//移除等待

- (void)alterViewShow:(NSString*)text;//弹窗提示

///上图下字

- (void)initButton:(UIButton*)btn;

///拨打电话

- (void)cellPhone:(NSString *)phone phoneTite:(NSString *)tite;

//让键盘消失

-(void)hideKeyBoard;

//找到指定的storyboard

-(UIStoryboard*)getSelectStoryboard:(NSString*)name;

//设置状态栏颜色

- (void)setStatusBarBackgroundColor:(UIColor *)color;

//去除多余分割线

-(void)setExtraCellLineHidden: (UITableView *)tableView;

//清除指定cell的分割线线

-(void)cleanCellLine:(UITableViewCell*)cell andTableView:(UITableView*)tableView;

//界面跳转 viewController:将跳转的界面  animated:是否动画

- (void)setContentViewController:(UIViewController *)viewController  animated:(BOOL)animated;

- (void)addPopupView:(NSString *)PopString andView:(UIViewController*)viewController;

//AFNetWorking的Get请求方法,Dictionary可为空nil

- (void)AFHTTPGetWithURLString:(NSString *)urlString Dictionary:(NSDictionary *)dictionary Succeed:(void(^)(id responseObject))Succeed Failured:(void(^)(NSError *error))Failured;

//AFNetWorking的POST请求方法,Dictionary可为要传的字典

- (void)AFHTTPPOSTWithURLString:(NSString *)urlString Dictionary:(NSDictionary *)dictionary Succeed:(void(^)(id responseObject))Succeed Failured:(void(^)(NSError *error))Failured;

@end

@interface UIView (Finder)

- (UIView*) findFirstResponderView;

@end


- (void)viewWillAppear:(BOOL)animated{

    self.tabBarController.tabBar.hidden  =YES;

    [self.navigationController setNavigationBarHidden:NO animated:animated];

    self.isFouClient = self.mydateModel.isClient;


}

- (void)viewWillDisappear:(BOOL)animated{


    [self DismissSVProgressHUD];

}

- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    self.navigationItem.title = self.title;


    UIBarButtonItem *backItem =[[UIBarButtonItem alloc]initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];

    self.navigationItem.backBarButtonItem =backItem;

    [self.navigationController.navigationBar setTitleTextAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:18],NSForegroundColorAttributeName:[UIColor whiteColor]}];

    [self.navigationController.navigationBar setTintColor:[UIColor whiteColor]];

    //self.navigationController.navigationBar.backgroundColor= KAllLines;

    self.navigationController.navigationBar.barTintColor = KAllLines;

    //KAllLines

    self.view.userInteractionEnabled = YES;

    self.view.backgroundColor = [UIColor whiteColor];


    self.memID = self.mydateModel.menberId;

//    self.dataSource = [[NSMutableArray alloc] init];

}

///拨打电话

- (void)cellPhone:(NSString *)phone phoneTite:(NSString *)tite{

    NSMutableString *str = [[NSMutableString alloc] initWithFormat:@"tel:%@",phone];

    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];

    UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {


    }];

    UIAlertAction *otherAction = [UIAlertAction actionWithTitle:tite style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:str]];

    }];

    [alertController addAction:cancelAction];

    [alertController addAction:otherAction];

    [self presentViewController:alertController animated:YES completion:nil];

}

//上图下字

-(void)initButton:(UIButton*)btn{

    btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;//使图片和文字水平居中显示

    [btn setTitleEdgeInsets:UIEdgeInsetsMake(btn.imageView.frame.size.height ,-btn.imageView.frame.size.width, 0.0,0.0)];//文字距离上边框的距离增加imageView的高度,距离左边框减少imageView的宽度,距离下边框和右边框距离不变

    [btn setImageEdgeInsets:UIEdgeInsetsMake(0.0, 0.0,0.0, -btn.titleLabel.bounds.size.width)];//图片距离右边框距离减少图片的宽度,其它不边

}

//隐藏键盘

- (void)hideKeyBoard

{

    for (UIWindow* window in [UIApplication sharedApplication].windows)

    {

        for (UIView* view in window.subviews)

        {

            [self dismissAllKeyBoardInView:view];

        }

    }

}

-(BOOL) dismissAllKeyBoardInView:(UIView *)view

{

    if([view isFirstResponder])

    {

        [view resignFirstResponder];

        return YES;

    }

    for(UIView *subView in view.subviews)

    {

        if([self dismissAllKeyBoardInView:subView])

        {

            return YES;

        }

    }

    return NO;

}

#pragma mark  --  显示  --

- (void)ShowSVProgressHUD:(NSString *)text{


    if (text.length>0) {

        [SVProgressHUD showWithStatus:text ];


    }else{

        [SVProgressHUD showWithStatus:@"正在加载数据..."];

    }


}

- (void)DismissSVProgressHUD{

    [SVProgressHUD dismiss];

}

- (void)alterViewShow:(NSString*)text{

    [NineStarToolsObject alterViewShow:text viewcontroller:self stayTime:0.5];

}

#pragma mark  --  找到指定Storyboard  --

-(UIStoryboard*)getSelectStoryboard:(NSString*)name{


    UIStoryboard* storyboard = [UIStoryboard storyboardWithName:name bundle:nil];

    return storyboard;

}

//设置状态栏颜色

- (void)setStatusBarBackgroundColor:(UIColor *)color {


    UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@"statusBarWindow"] valueForKey:@"statusBar"];

    if ([statusBar respondsToSelector:@selector(setBackgroundColor:)]) {

        statusBar.backgroundColor = color;

    }

}

#pragma mark  --  取消tableView多余的线  --

-(void)setExtraCellLineHidden: (UITableView *)tableView

{

    UIView *view = [UIView new];

    view.backgroundColor = [UIColor clearColor];

    [tableView setTableFooterView:view];

}

//清除指定cell的分割线线

-(void)cleanCellLine:(UITableViewCell*)cell andTableView:(UITableView*)tableView{

    cell.backgroundColor = tableView.backgroundColor;

    cell.layer.borderColor = tableView.backgroundColor.CGColor;

    cell.layer.borderWidth = 1.0;

}

#pragma mark  --  跳转  --

- (void)setContentViewController:(UIViewController *)viewController  animated:(BOOL)animated{

    self.hidesBottomBarWhenPushed=YES;

    [self.navigationController pushViewController:viewController animated:animated];

    self.hidesBottomBarWhenPushed=NO;

}

- (void)addPopupView:(NSString *)PopString andView:(UIViewController*)viewController{

    PopupView* popView = [[PopupView alloc]initWithFrame:CGRectMake(0, self.view.frame.size.height-100, 0, 0)];

    popView.ParentView = viewController.view;

    [popView setText: PopString];

    [self.view addSubview:popView];


}

#pragma mark  --  请求  --

- (void)AFHTTPGetWithURLString:(NSString *)urlString Dictionary:(NSDictionary *)dictionary Succeed:(void(^)(id responseObject))Succeed Failured:(void(^)(NSError *error))Failured {

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    // 设置超时时间

    [manager.requestSerializer willChangeValueForKey:@"timeoutInterval"];

    manager.requestSerializer.timeoutInterval = 8.f;

    [manager.requestSerializer didChangeValueForKey:@"timeoutInterval"];

    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html",@"application/json",@"text/plain",@"text/json",nil];


    [manager GET:urlString parameters:dictionary progress:^(NSProgress * _Nonnull downloadProgress) {


    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

        Succeed(responseObject);

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

        Failured(error);

        NSLog(@"%@", [error localizedDescription]);

        [self DismissSVProgressHUD];

        if (error.code == -1001) {

            [self addPopupView:@"请求超时" andView:self];

        }else{

            [self addPopupView:@"请求失败" andView:self];

        }

    }];


}

- (void)AFHTTPPOSTWithURLString:(NSString *)urlString Dictionary:(NSDictionary *)dictionary Succeed:(void(^)(id responseObject))Succeed Failured:(void(^)(NSError *error))Failured{


    AFHTTPSessionManager *manager =[AFHTTPSessionManager manager];


    // 设置超时时间

    [manager.requestSerializer willChangeValueForKey:@"timeoutInterval"];

    manager.requestSerializer.timeoutInterval = 8.f;

    [manager.requestSerializer didChangeValueForKey:@"timeoutInterval"];

    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html",@"application/json",@"text/plain",@"text/json",nil];


    [manager POST:urlString parameters:dictionary progress:^(NSProgress * _Nonnull uploadProgress) {


    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

        Succeed(responseObject);

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

        Failured(error);

        NSLog(@"%@", [error localizedDescription]);

        [self DismissSVProgressHUD];

//        if (error.code == -1001) {

//            [self addPopupView:@"请求超时" andView:self];

//        }else{

//            [self addPopupView:@"请求失败" andView:self];

//        }


    }];


}

//判断是否登录

- (BOOL)isloginIn{

    if (self.mydateModel.tele.length>0) {

        return YES;

    }

    return NO;

}

//

//-(void)viewWillDisappear:(BOOL)animated {

//    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];

//    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];

//}

#pragma  mark --懒加载

- (NSMutableArray*)dataSource{

    if (!_dataSource) {

        _dataSource = [[NSMutableArray alloc] init];

    }

    return _dataSource;

}

- (NSMutableArray*)secondarry{

    if (!_secondarry) {

        _secondarry = [[NSMutableArray alloc] init];

    }

    return _secondarry;

}

- (MydataModel*)mydateModel{

    _mydateModel = [[MydataModel alloc] initWithDictionary:[[NSUserDefaults standardUserDefaults] objectForKey:@"userData"]];

    return _mydateModel;

}

- (NSMutableArray *)imagePathArray{

    if (!_imagePathArray) {

        _imagePathArray = [[NSMutableArray alloc] init];

    }

    return _imagePathArray;

}

- (void)didReceiveMemoryWarning {

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}

/*

#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

    // Get the new view controller using [segue destinationViewController].

    // Pass the selected object to the new view controller.

}

*/

@end

@implementation UIView (Finder)

- (UIView*) findFirstResponderView {

    if ([self isFirstResponder]) {

        return self;

    }


    for (UIView* subView in self.subviews) {

        UIView* view = [subView findFirstResponderView];

        if (view != nil) {

            return view;

        }

    }

    return nil;

}

@end

你可能感兴趣的:(BaseViewController)