Viewcontroller基类
#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基类的更多相关文章
- 【iOS】 含tableView的ViewController基类的实现
上篇博客写了ViewController的基类的实现,这篇博客主要写在BaseViewController的基础上实现一个含tableView控件的基类的实现,主要给包含tableView的页面来继承 ...
- iOS控制器之基类设计
题记 在进入新公司后.经过这一个月的重构项目,终于把项目做到了个人相对满意的程度(还有一种不满意的叫老板的需求,提过多次意见也没用= =!).在这次重构中按照以前的思路设计出了个人觉得比较适用的一个基 ...
- 无线客户端框架设计(3):基类的设计(iOS篇)
本文代码:YoungHeart-Chapter-03.zip 没有基类的App都不是好App. 因为iOS使用的是mvc模式的开发模式,所以,业务逻辑基本都在每个页面相应的ViewController ...
- 【iOS】UIViewController基类的实现
继承是面向对象编程语言的三大特性之一,写好基类会给App的开发带来极大的方便.在iOS开发中,一般一个页面就对应一个ViewController,ViewController在开发中用的也很多,写一个 ...
- [Swift实际操作]九、完整实例-(5)创建BaseViewController作为控制器的基类
本文将给项目中的所有视图控制器,创建一份基类.该基类用来定义一些共用的属性和方法. 首先在用来放置视图控制器类的文件夹上点击鼠标右键,打开右键 菜单. 选择[New File]创建文件选项. 在弹出的 ...
- 写个Fragment方便的抽象基类 BaseFragment
package com.zb.zhihuianyang.base; import android.app.Activity; import android.os.Bundle; import andr ...
- 【C++】继承(虚基类)
类的继承与派生 面向对象技术强调软件的可重用性,这种重用性通过继承机制来实现.而在类的继承过程中,被重用的原有类称为基类,新创建的类称为派生类.派生类定义语法格式如下: class <派生类名& ...
- 虚函数的使用 以及虚函数与重载的关系, 空虚函数的作用,纯虚函数->抽象类,基类虚析构函数使释放对象更彻底
为了访问公有派生类的特定成员,可以通过讲基类指针显示转换为派生类指针. 也可以将基类的非静态成员函数定义为虚函数(在函数前加上virtual) #include<iostream> usi ...
- lua中基类和“继承机制”
基类:基类定义了所有对于派生类来说普通的属性和方法,派生类从基类继承所需的属性和方法,且在派生类中增加新的属性和方法. 继承:继承是C++语言的一种重要机制,它允许在已定义的类的基础上产生新类. lu ...
随机推荐
- JavaScript高级程序设计学习笔记第九章--客户端检测
1.能力检测:能力检测的目标不是识别特定的浏览器,而是识别浏览器的能力.(我的理解就是识别浏览器能做什么不能做什么) 2.怪癖检测:目标是识别浏览器的特殊行为.但与能力检测确认浏览器支持什么能力不同, ...
- 此microsoft fix it不适用于您的操作系统 解决方案
想卸载低版本的office,下载了一个office卸载程序,但是运行时提示 此microsoft fix it不适用于您的操作系统 错误,在网上找了下解决方案,如下: 右键点击“兼容性疑难检查”,等 ...
- ajax方法data参数用法的总结
源文件分析: data的传递格式有两种:一是url字符串格式:一种是Json格式,格式分别如上 区别是:当传递的参数中包含 特殊字符如:&时,服务器解析这个参数时就会出错,而必须用encode ...
- Al-Qaeda affiliate in&…
By Greg Miller, Updated: Friday, February 1, 4:13 AM New intelligence on al-Qaeda's affiliate in Nor ...
- 反射学习:(System.Reflection)
反射为了动态(运行时动态) 原理:读取metadata(?) Assembly assembly = Assembly.Load("TestReflections");//反射 ...
- 文本自动摘要:基于TextRank的中文新闻摘要
TextRank算法源自于PageRank算法.PageRank算法最初是作为互联网网页排序的方法,经过轻微地改动,可以被应用于文本摘要领域. 本文分为两部分,第一部分介绍TextRank做文本自动摘 ...
- Pycharm 设置TextStyle
之前在脚本中选择了一个字符串, PyCharm会"高亮"所有相同的字符串, 但是我不满意这个"高亮"的颜色,因为和背景色太相似了,所以需要做一下操作,修改这个& ...
- 51nod 1831 小C的游戏
小C和小L是好朋友,她们在玩一个游戏. 一开始有一个大小为n的石子堆,小C先手. 每次可以对这个石子堆拿走一个或者把这个石子堆分成等量的几份并只取其中一份(不能不变或只剩下一个). 如果取走最后一个人 ...
- uoj#339. 【清华集训2017】小 Y 和二叉树(构造)
传送门 膜拜大米饼巨巨 构造思路太神仙了-- 先考虑这个序列的开头,肯定是一个度数小于等于\(2\)且标号最小的节点,设为\(u\) 如果一个点度数小于等于\(2\),我们称这个点可以被选择,一个点的 ...
- hdu2027 trie树 字典树模板
#include <iostream> #include <cstdio> #include <cstring> #include <sstream> ...