AppDelegate 、UIApplication 的用法
转载自 http://blog.chinaunix.net/uid-26768267-id-3300042.html
- //AppDelegate.h 头文件
- #import <UIKit/UIKit.h>
- @class SwitchViewController;
- @interface AppDelegate : UIResponder <UIApplicationDelegate>
- {
- UIApplication *mApp; //新建一个UIApplication对象
- }
- @property (strong, nonatomic) UIWindow *window;
- @property (nonatomic, retain) SwitchViewController *switchViewController; //为窗口转换的类
- @end
- #import "AppDelegate.h"
- #import "SwitchViewController.h"
- @implementation AppDelegate
- @synthesize window = _window;
- @synthesize switchViewController;
- - (void)dealloc
- {
- [_window release];
- [switchViewController release];
- mApp.idleTimerDisabled = NO;
- [super dealloc];
- }
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- {
- self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
- //初始化
- switchViewController = [[SwitchViewController alloc]init];
- //这两句话效果一样
- //[[self window]setRootViewController:switchViewController];
- self.window.rootViewController = self.switchViewController;
- [switchViewController release];
- mApp = application;
- application.idleTimerDisabled = YES;
- [[self window]makeKeyAndVisible]; //或[self.window makeKeyAndVisible];
- return YES;
- }
- @end
- //SwitchViewController 类头文件。集中实现窗口跳转
- #import <UIKit/UIKit.h>
- #import "ViewTestone.h"
- #import "ViewController.h"
- @class ViewTestone; //View
- @class ViewController; //View
- typedef int RequestId;
- enum REQUESTVIEW
- {
- REQUEST_TESTONEVIEW,
- };
- @interface SwitchViewController :UIViewController
- {
- }
- @property (nonatomic, retain)ViewTestone *viewTestone;
- @property (nonatomic, retain) UIViewController *previousViewController;
- @property (nonatomic, retain)ViewController *viewController;
- -(void)switchToView:(RequestId)requestId;
- -(void)gotoTestoneView; //跳转到TestoneView
- @end
- //SwitchViewController.m 文件
- #import "SwitchViewController.h"
- @implementation SwitchViewController
- {
- }
- @synthesize viewTestone;
- @synthesize previousViewController;
- @synthesize viewController;
- //当程序加载完AppDelegate里的 didFinishLaunchingWithOptions 方法后就会跳到这里 .下面可把ViewController实现为默认的View加载
- -(void)viewDidLoad
- {
- NSLog(@"----------");
- if(self.viewController ==nil)
- {
- //新建VIEWCONTRollerr 的一个对象
- ViewController *viewcontroll = [[ViewController alloc]initWithNibName:@"ViewConTroller" bundle:nil];
- self.viewController = viewcontroll;
- [viewcontroll release];
- }
- [self.view insertSubview:viewController.view atIndex:0];
- self.previousViewController = self.viewController;
- }
- -(void)viewDidUnload
- {
- self.viewController = nil;
- self.viewTestone = nil;
- [super viewDidLoad];
- }
- -(void)dealloc
- {
- [viewTestone release];
- [viewController release];
- [super dealloc];
- }
- //下面具体实现view之间的跳转。一般的程序都会有很多个这样的窗口跳转。所以把它们集中在一个公共的类里面这样会拿的代码看上去很简洁。明了,
- -(void)switchToView:(RequestId)requestId
- {
- switch (requestId) {
- case REQUEST_TESTONEVIEW:
- [self gotoTestoneView];
- break;
- //....................
- default:
- break;
- }
- }
- //这就到了具体到某一个窗口之间的跳转了。
- -(void)gotoTestoneView
- {
- NSLog(@"test ok~");
- if(self.viewTestone ==nil)
- {
- ViewTestone *testOneView = [[ViewTestone alloc]initWithNibName:@"ViewTestone" bundle:nil];
- self.viewTestone = testOneView;
- [testOneView release];
- }
- if(self.previousViewController.view.superview !=nil)
- {
- [previousViewController.view removeFromSuperview];
- }
- [self.view insertSubview:viewTestone.view atIndex:0];
- self.previousViewController = [self viewTestone];
- }
- @end
- //具体的实现方法。。应用~
- -(void)addButtonToNewView
- {
- //新建一个按键
- UIButton *toviewBtn = [UIButton buttonWithType:UIButtonTypeCustom];
- //设置按钮的背景颜色 UIControlStateNormal按钮按之前的颜色 UIControlStateHighlighted反之
- [toviewBtn setImage:[UIImage imageNamed:@"v_exit.png"]forState:UIControlStateNormal ] ;
- //CGRect r;
- //r = CGRectMake(120, 300, 100, 30);
- //设置按钮的大小
- toviewBtn.frame = CGRectMake(120, 300, 100, 30);;
- //为按钮添加事件
- [toviewBtn addTarget:self action:@selector(toOntViewPress:) forControlEvents:UIControlEventTouchUpInside];
- //加载到当前的view
- [self.view addSubview:toviewBtn];
- }
- -(void)toOntViewPress:(id)sender
- {
- NSLog(@"successfull");
- //前面长长的AppDelegate SwitchViewController 都是为了下面这两句话。两句话就可以轻松的跳转到你想要去的页面。这样就显得很方便。
- AppDelegate *app = [[UIApplication sharedApplication]delegate];
- [app.switchViewController switchToView:0];
- }
AppDelegate 、UIApplication 的用法的更多相关文章
- iOS UIApplication sharedapplication用法
应用中打开其他应用 我们来讨论一下,在iOS开发中,如何实现从app1打开app2. 基本的思路就是,可以为app2定义一个URL,在app1中通过打开这个URL来打开app2,在此过程中,可以传送一 ...
- [转]详解AppDelegate/UIApplication
一.UIApplication 1.简单介绍 (1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序. (2)每一个应用都有自己的UIApplica ...
- OC中APPDelegate[[UIApplication shareApplication]delegate]]Swift实现
直接上代码: var myDelegate:AppDelegate? myDelegate = UIApplication.sharedApplication().delegate as? AppDe ...
- ios中UIWebview和asiHttprequest的用法
原文地址为:http://www.cnblogs.com/pengyingh/articles/2343062.htmlasiHttprequest的用法 它对Get请求的响应数据进行缓存(被缓存的数 ...
- iOS Method Swizzling和分类的妙用AppDelegate轻量化处理
http://www.cocoachina.com/ios/20151117/14167.html 简介 在iOS工程中,AppDelegate往往会有上千行,甚至几千行,这样就会给维护AppDele ...
- 关于UIApplication单例传值
由于UIApplication的是一个系统级别的单例,那么就能够省去自己创建单例的方法,将需要需要的类对象,在UIApplication单例内声明一个,通过点语法来实现单个 需要调用的实现单例模式的类 ...
- [MISS静IOS开发原创文摘]-AppDelegate存储全局变量和 NSUserDefaults standardUserDefaults 通过模型保存和读取数据,存储自定义的对象
由于app开发的需求,需要从api接口获得json格式数据并保存临时的 app的主题颜色 和 相关url 方案有很多种: 1, 通过AppDelegate保存为全局变量,再获取 2,使用NSUSerD ...
- Core Data的简单用法
#import "ViewController.h" // 第一步:引入头文件AppDelegate #import "AppDelegate.h" #impo ...
- ios开发之AppDelegate
创建应用程序之后之后,默认有AppDelegate.h文件与AppDelegate.m文件. AppDelegate为何物? AppDelegate为整个应用的一个代理,提供程序启动.退出等类似 ...
随机推荐
- uva live 6170
Esspe-Peasee Esspe-Peasee is an ancient game played by children throughout the land of Acmania. The ...
- hdu 4607 Park Visit(树上最长链)
求树上最长链:两遍搜索. 第一次从树上任意点开始,最远点必然是某一条最长链上的端点u. 第二次从u开始,最远点即该最长链的另一端点. 先在最长链上走,不足再去走支链. 把询问数m错打成n,狠狠wa了一 ...
- HDU 1272 小希的迷宫 (水题)
题意: 其实就是让你判断一个图是否为树,要求不能有孤立的点(没有这中情况),且只能有1个连通图,且边数+1=点数,且每个点都有边(不可能只有1个点出现). 思路: 有可能出现连续的4个0,也就是有测试 ...
- atoi&itoa
char* itoa(int num,char*str,int radix) {/*索引表*/ char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVW ...
- Window 下 VFW 视频采集与显示
引言 经过几天的努力终于将VFW视频采集与显示功能完整实现了,不得不说网上对这方面完整的详细讲解文章是在太少了.所以就要本人来好好总结一下让后来者不再像我一样折腾好久.在本文中我将详细讲解VFW视频采 ...
- <三>面向对象分析之UML核心元素之参与者
一:版型 --->在UML里有一个概念叫版型.有些书里也称类型,构造型. --->这个概念是对一个UML元素基础定义的扩展.在同一个元素基础定义的基础上赋予特别 ...
- 【原】cocos2d-x 2.0.4 不支持https协议 CURLE_UNSUPPORTED_PROTOCOL
我们项目组用的cocos2d-x版本还比较老,各种好的功能不能用. 今天就让我遇到一个问题,使用CCHttpClient发送http请求的时候,https协议的不支持,返回失败信息如下 errorco ...
- Informatica 9.1常用查询
select a.mapping_name, a.mapping_id, a.subject_id, a.is_valid, b.pv_precision, c.pv_value, b.pv_defa ...
- HDU 1387 Team Queue
Team Queue Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- IOC框架Ninject实践总结
原文地址:http://www.cnblogs.com/jeffwongishandsome/archive/2012/04/15/2450462.html IOC框架Ninject实践总结 一.控制 ...