美文网首页
BaseViewController

BaseViewController

作者: 愤怒滴菜鸟 | 来源:发表于2018-03-12 10:46 被阅读0次

    @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

          本文链接:https://www.haomeiwen.com/subject/ieqnfftx.html