@interface BaseViewController : UIViewController
@property (nonatomic,retain)NSMutableArray*dataSource;//數(shù)據(jù)集合 用于存儲請求解析后的數(shù)據(jù)
@property (nonatomic,retain)NSMutableArray*secondarry;//數(shù)據(jù)集合 用于存儲其他的數(shù)據(jù)
@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;
//設(shè)置狀態(tài)欄顏色
- (void)setStatusBarBackgroundColor:(UIColor *)color;
//去除多余分割線
-(void)setExtraCellLineHidden: (UITableView *)tableView;
//清除指定cell的分割線線
-(void)cleanCellLine:(UITableViewCell*)cell andTableView:(UITableView*)tableView;
//界面跳轉(zhuǎn) viewController:將跳轉(zhuǎn)的界面? 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:@"正在加載數(shù)據(jù)..."];
? ? }
}
- (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;
}
//設(shè)置狀態(tài)欄顏色
- (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? --? 跳轉(zhuǎn)? --
- (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];
? ? // 設(shè)置超時(shí)時(shí)間
? ? [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:@"請求超時(shí)" 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];
? ? // 設(shè)置超時(shí)時(shí)間
? ? [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:@"請求超時(shí)" 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