#import <UIKit/UIKit.h>

#import "YQZMutableArray.h"

@interface YQZViewController : UIViewController

@property (nonatomic, strong) NSString *kTitle;

//保存当前正在运行的http请求

@property (nonatomic, strong) YQZMutableArray* httpRequestArray;

- (void)addBackBtnToHomePage;

- (void)addLeftBackBtn;

- (UIButton *)addRightTextButtonWithText:(NSString *)buttonText action:(SEL)action;

- (UIButton *)addRightImageButtonWithImageName:(NSString *)imageNamed action:(SEL)action;

- (UIButton *)addLeftTextButtonWithText:(NSString *)buttonText action:(SEL)action;

- (void)back;

- (void)backToHomepage;

- (void)addMakeCall;

- (void)loadTopData;

- (void)showLogin;

- (void)cancelHttpRequest;

@end

.m

#import "YQZViewController.h"

#import "YQZAppDelegate.h"

#import "YQZLoginViewController.h"

#import "SDWebImageManager.h"

#import "YQZImageCache.h"

#import "AFHttpClient.h"

@interface YQZViewController ()

@end

@implementation YQZViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

if (self)

{

self.httpRequestArray = [[YQZMutableArray alloc] init];

}

return self;

}

- (void)viewDidLoad

{

[super viewDidLoad];

if (kdSystemVersion >= 7.0f) {

[self.navigationController.navigationBar setTranslucent:NO];

[self.navigationController.view setBackgroundColor:kYQZBorderGrayLightColor];

[self setExtendedLayoutIncludesOpaqueBars:YES];

[self setAutomaticallyAdjustsScrollViewInsets:YES];

[self setModalTransitionStyle:UIModalTransitionStyleCoverVertical];

[self setModalPresentationStyle:UIModalPresentationFullScreen];

[self setEdgesForExtendedLayout:UIRectEdgeAll];

self.edgesForExtendedLayout = UIRectEdgeNone;

}

//    if (kdSystemVersion < 7.0) {

//        self.navigationController.navigationBar.titleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],UITextAttributeTextColor,[UIFont boldSystemFontOfSize:20],UITextAttributeFont,[NSValue valueWithUIOffset:UIOffsetZero], UITextAttributeTextShadowOffset,nil];

//    } else if (kdSystemVersion >= 7.0)

//    {

//

//    }

}

- (void)dealloc

{

NSLog(@"%@ has dealloc",[NSString stringWithUTF8String:object_getClassName(self)]);

}

- (void)loadTopData

{

}

- (void)showLogin

{

if ([YQZLoginViewController canAutoLogin])

{

[self autoLogin];

} else {

[self manualLogin];

}

}

- (void)autoLogin

{

[YQZSetting sharedInstance].loginStatus = LoginStatusLogOut;

YQZLoginViewController *autoLoginViewController = [[YQZLoginViewController alloc] initWithNibName:@"YQZLoginViewController" bundle:nil];

[autoLoginViewController autoLogin];

}

- (void)manualLogin

{

YQZLoginViewController *loginViewController = [[YQZLoginViewController alloc] initWithNibName:@"YQZLoginViewController" bundle:nil];

loginViewController.delegate = self;

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:loginViewController];

//[self.navigationController presentViewController:navigationController animated:TRUE completion:NULL];

YQZAppDelegate* delegate = (YQZAppDelegate*)[UIApplication sharedApplication].delegate;

[delegate.window.rootViewController presentViewController:navigationController animated:YES completion:nil];

}

- (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

[[[SDWebImageManager sharedManager] imageCache] clearMemory];

[[YQZImageCache sharedInsance] clearCachedImages];

}

- (void)back

{

[self.view endEditing:YES];

[self cancelHttpRequest];

[self.navigationController popViewControllerAnimated:YES];

}

- (void)addMakeCall

{

UIButton *button =[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)] ;

button.backgroundColor = [UIColor clearColor];

[button setImage:[UIImage imageNamed:@"打电话"] forState:UIControlStateNormal];

[button setImage:[UIImage imageNamed:@"打电话"] forState:UIControlStateHighlighted];

button.imageEdgeInsets = kNavigationRightButtonInSet;

[button addTarget:self action:@selector(makeCall) forControlEvents:UIControlEventTouchUpInside];

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];

}

- (void)makeCall

{

NSString *telStr = [NSString stringWithFormat:@"tel://%@", kCompanyPhone];

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

[MobClick event:@"Other_CallTel"];

}

- (void)backToHomepage

{

[self.navigationController popViewControllerAnimated:YES];

}

- (void)addLeftBackBtn

{

UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc]

initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace

target:nil action:nil];

if (kdSystemVersion >= 7.f) {

negativeSpacer.width = -10;

}

UIButton *button =[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)] ;

button.backgroundColor = [UIColor clearColor];

[button setImage:[UIImage imageNamed:@"back"] forState:UIControlStateNormal];

[button setImage:[UIImage imageNamed:@"back_h"] forState:UIControlStateHighlighted];

[button addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *backNavigationItem = [[UIBarButtonItem alloc] initWithCustomView:button];

self.navigationItem.leftBarButtonItems = @[negativeSpacer, backNavigationItem];

}

- (void)addBackBtnToHomePage

{

UIButton *button =[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)] ;

button.backgroundColor = [UIColor clearColor];

[button setImage:[UIImage imageNamed:@"back"] forState:UIControlStateNormal];

[button setImage:[UIImage imageNamed:@"back_h"] forState:UIControlStateHighlighted];

[button addTarget:self action:@selector(backToHomepage) forControlEvents:UIControlEventTouchUpInside];

self.navigationItem.leftBarButtonItem = nil;

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button] ;

}

- (UIButton *)addRightTextButtonWithText:(NSString *)buttonText action:(SEL)action

{

UIButton *textButton =[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 70, 44)];

textButton.backgroundColor = [UIColor clearColor];

[textButton setTitle:buttonText forState:UIControlStateNormal];

textButton.titleLabel.font = [UIFont systemFontOfSize:kNavigationButtonFontSize];

if (buttonText.length == 4) {

if (kdSystemVersion >= 7.f) {

textButton.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, -15);

}

}else {

if (kdSystemVersion >= 7.f) {

textButton.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, -48);

}

}

[textButton addTarget:self action:action forControlEvents:UIControlEventTouchUpInside];

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:textButton];

return textButton;

}

- (UIButton *)addRightImageButtonWithImageName:(NSString *)imageName action:(SEL)action

{

UIButton *imageButton;

if (DEVICE_IS_IPHONE6Plus||DEVICE_IS_IPHONE6PlusBig) {

imageButton =[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 44, 44)];

}

else{

imageButton =[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];

}

imageButton.backgroundColor = [UIColor clearColor];

[imageButton setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];

[imageButton setImage:[UIImage imageNamed:imageName] forState:UIControlStateHighlighted];

[imageButton setImageEdgeInsets:kNavigationRightButtonInSet];

imageButton.titleLabel.font = [UIFont systemFontOfSize:kNavigationButtonFontSize];

[imageButton addTarget:self action:action forControlEvents:UIControlEventTouchUpInside];

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:imageButton];

return imageButton;

}

- (UIButton *)addLeftTextButtonWithText:(NSString *)buttonText action:(SEL)action

{

UIButton *textButton =[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 70, 44)];

textButton.backgroundColor = [UIColor clearColor];

[textButton setTitle:buttonText forState:UIControlStateNormal];

textButton.titleLabel.font = [UIFont systemFontOfSize:kNavigationButtonFontSize];

[textButton.titleLabel setTextAlignment:NSTextAlignmentLeft];

if (buttonText.length == 4) {

if (kdSystemVersion >= 7.f) {

textButton.titleEdgeInsets = UIEdgeInsetsMake(0, -15, 0, 0);

}

}else {

if (kdSystemVersion >= 7.f) {

textButton.titleEdgeInsets = UIEdgeInsetsMake(0, -48, 0, 0);

}

}

[textButton addTarget:self action:action forControlEvents:UIControlEventTouchUpInside];

self.navigationItem.leftBarButtonItem = nil;

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:textButton];

return textButton;

}

-(void)cancelHttpRequest

{

for (id opertion in self.httpRequestArray) {

if ([opertion isKindOfClass:[AFHTTPRequestOperation class]]) {

[opertion cancel];

}

}

[self.httpRequestArray removeAllObjects];

}

@end

Viewcontroller基类的更多相关文章

  1. 【iOS】 含tableView的ViewController基类的实现

    上篇博客写了ViewController的基类的实现,这篇博客主要写在BaseViewController的基础上实现一个含tableView控件的基类的实现,主要给包含tableView的页面来继承 ...

  2. iOS控制器之基类设计

    题记 在进入新公司后.经过这一个月的重构项目,终于把项目做到了个人相对满意的程度(还有一种不满意的叫老板的需求,提过多次意见也没用= =!).在这次重构中按照以前的思路设计出了个人觉得比较适用的一个基 ...

  3. 无线客户端框架设计(3):基类的设计(iOS篇)

    本文代码:YoungHeart-Chapter-03.zip 没有基类的App都不是好App. 因为iOS使用的是mvc模式的开发模式,所以,业务逻辑基本都在每个页面相应的ViewController ...

  4. 【iOS】UIViewController基类的实现

    继承是面向对象编程语言的三大特性之一,写好基类会给App的开发带来极大的方便.在iOS开发中,一般一个页面就对应一个ViewController,ViewController在开发中用的也很多,写一个 ...

  5. [Swift实际操作]九、完整实例-(5)创建BaseViewController作为控制器的基类

    本文将给项目中的所有视图控制器,创建一份基类.该基类用来定义一些共用的属性和方法. 首先在用来放置视图控制器类的文件夹上点击鼠标右键,打开右键 菜单. 选择[New File]创建文件选项. 在弹出的 ...

  6. 写个Fragment方便的抽象基类 BaseFragment

    package com.zb.zhihuianyang.base; import android.app.Activity; import android.os.Bundle; import andr ...

  7. 【C++】继承(虚基类)

    类的继承与派生 面向对象技术强调软件的可重用性,这种重用性通过继承机制来实现.而在类的继承过程中,被重用的原有类称为基类,新创建的类称为派生类.派生类定义语法格式如下: class <派生类名& ...

  8. 虚函数的使用 以及虚函数与重载的关系, 空虚函数的作用,纯虚函数->抽象类,基类虚析构函数使释放对象更彻底

    为了访问公有派生类的特定成员,可以通过讲基类指针显示转换为派生类指针. 也可以将基类的非静态成员函数定义为虚函数(在函数前加上virtual) #include<iostream> usi ...

  9. lua中基类和“继承机制”

    基类:基类定义了所有对于派生类来说普通的属性和方法,派生类从基类继承所需的属性和方法,且在派生类中增加新的属性和方法. 继承:继承是C++语言的一种重要机制,它允许在已定义的类的基础上产生新类. lu ...

随机推荐

  1. 一 Kubernetes介绍

    Kubenetes是一款由Google开发的开源的容器编排工具,它可以解决以下分布式环境下的问题: 调度 你已经得到了这个很棒的基于容器的应用程序? 太棒了!现在你需要确保它能够运行在它应该运行的地方 ...

  2. pkg_resources----Entry Points为程序提供扩展点

    官方文档对Entry Points的介绍 Entry Points Entry points are a simple way for distributions to "advertise ...

  3. [xdoj1227]Godv的数列(crt+lucas)

    解题关键:1001=7*11*13,模数非常小,直接暴力lucas.递归次数几乎为很小的常数.最后用中国剩余定理组合一下即可. 模数很小时,一定记住lucas定理的作用 http://acm.xidi ...

  4. [codeforces219D]Choosing Capital for Treeland树形dp

    题意:给出一棵树,带有向边,找出某个点到达所有点需要反转的最少的边. 解题关键:和求树的直径的思路差不多,将求(父树-子树)的最大值改为求特定值.依然是两次dfs,套路解法. 对树形dp的理解:树形d ...

  5. Excel添加水印

    Excel添加水印[源码下载] 步骤一:根据生成图片的类创建水印图片 步骤二: 代码在Excel中根据第一行获取sheet的列数[sheet.getRow(0).getLastCellNum() ], ...

  6. ue4-C++中加载一个蓝图类(二)-C++中绑定Blueprint武器

    editor中编辑好一个武器蓝图资源后,c++中create出这个武器,然后attach到一个人物身上. 思路:  写个c++基类,蓝图继承后编辑成武器或其他装备,然后c++用一个TSubclassO ...

  7. Linux下查看磁盘剩余空间和文件夹大小

    1. du -sh 查看当前文件夹大小 2. du -sh * | sort -n 列出当前文件夹下的所有文件夹及其大小,并按照文件夹大小排序 du - sh *  //查看当前文件夹下所有文件的大小 ...

  8. JS 检查是否在微信浏览器

    /** * 检查是否在微信浏览器 * zengkai */ function isWeixinBrowser(){ var ua = navigator.userAgent.toLowerCase() ...

  9. 洛谷P1587 [NOI2016]循环之美

    传送门 不会,先坑着 https://kelin.blog.luogu.org/solution-p1587 //minamoto #include<cstdio> #include< ...

  10. Python学习笔记(数据处理)

    处理文件中数据 (统计分数) 看一下我们的文档里的数据: #-- scores.txt 刘备 23 35 44 47 51 关羽 60 77 68 张飞 97 99 89 91 诸葛亮 100 1.先 ...