@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