转载自  http://blog.chinaunix.net/uid-26768267-id-3300042.html

  1. //AppDelegate.h 头文件
  2. #import <UIKit/UIKit.h>
  3. @class SwitchViewController;
  4. @interface AppDelegate : UIResponder <UIApplicationDelegate>
  5. {
  6. UIApplication *mApp; //新建一个UIApplication对象
  7. }
  8. @property (strong, nonatomic) UIWindow *window;
  9. @property (nonatomic, retain) SwitchViewController *switchViewController; //为窗口转换的类
  10. @end
  11. #import "AppDelegate.h"
  12. #import "SwitchViewController.h"
  13. @implementation AppDelegate
  14. @synthesize window = _window;
  15. @synthesize switchViewController;
  16. - (void)dealloc
  17. {
  18. [_window release];
  19. [switchViewController release];
  20. mApp.idleTimerDisabled = NO;
  21. [super dealloc];
  22. }
  23. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
  24. {
  25. self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
  26. //初始化
  27. switchViewController = [[SwitchViewController alloc]init];
  28. //这两句话效果一样
  29. //[[self window]setRootViewController:switchViewController];
  30. self.window.rootViewController = self.switchViewController;
  31. [switchViewController release];
  32. mApp = application;
  33. application.idleTimerDisabled = YES;
  34. [[self window]makeKeyAndVisible]; //或[self.window makeKeyAndVisible];
  35. return YES;
  36. }
  37. @end
  38. //SwitchViewController 类头文件。集中实现窗口跳转
  39. #import <UIKit/UIKit.h>
  40. #import "ViewTestone.h"
  41. #import "ViewController.h"
  42. @class ViewTestone; //View
  43. @class ViewController; //View
  44. typedef int RequestId;
  45. enum REQUESTVIEW
  46. {
  47. REQUEST_TESTONEVIEW,
  48. };
  49. @interface SwitchViewController :UIViewController
  50. {
  51. }
  52. @property (nonatomic, retain)ViewTestone *viewTestone;
  53. @property (nonatomic, retain) UIViewController *previousViewController;
  54. @property (nonatomic, retain)ViewController *viewController;
  55. -(void)switchToView:(RequestId)requestId;
  56. -(void)gotoTestoneView; //跳转到TestoneView
  57. @end
  58. //SwitchViewController.m 文件
  59. #import "SwitchViewController.h"
  60. @implementation SwitchViewController
  61. {
  62. }
  63. @synthesize viewTestone;
  64. @synthesize previousViewController;
  65. @synthesize viewController;
  66. //当程序加载完AppDelegate里的 didFinishLaunchingWithOptions 方法后就会跳到这里 .下面可把ViewController实现为默认的View加载
  67. -(void)viewDidLoad
  68. {
  69. NSLog(@"----------");
  70. if(self.viewController ==nil)
  71. {
  72. //新建VIEWCONTRollerr 的一个对象
  73. ViewController *viewcontroll = [[ViewController alloc]initWithNibName:@"ViewConTroller" bundle:nil];
  74. self.viewController = viewcontroll;
  75. [viewcontroll release];
  76. }
  77. [self.view insertSubview:viewController.view atIndex:0];
  78. self.previousViewController = self.viewController;
  79. }
  80. -(void)viewDidUnload
  81. {
  82. self.viewController = nil;
  83. self.viewTestone = nil;
  84. [super viewDidLoad];
  85. }
  86. -(void)dealloc
  87. {
  88. [viewTestone release];
  89. [viewController release];
  90. [super dealloc];
  91. }
  92. //下面具体实现view之间的跳转。一般的程序都会有很多个这样的窗口跳转。所以把它们集中在一个公共的类里面这样会拿的代码看上去很简洁。明了,
  93. -(void)switchToView:(RequestId)requestId
  94. {
  95. switch (requestId) {
  96. case REQUEST_TESTONEVIEW:
  97. [self gotoTestoneView];
  98. break;
  99. //....................
  100. default:
  101. break;
  102. }
  103. }
  104. //这就到了具体到某一个窗口之间的跳转了。
  105. -(void)gotoTestoneView
  106. {
  107. NSLog(@"test ok~");
  108. if(self.viewTestone ==nil)
  109. {
  110. ViewTestone *testOneView = [[ViewTestone alloc]initWithNibName:@"ViewTestone" bundle:nil];
  111. self.viewTestone = testOneView;
  112. [testOneView release];
  113. }
  114. if(self.previousViewController.view.superview !=nil)
  115. {
  116. [previousViewController.view removeFromSuperview];
  117. }
  118. [self.view insertSubview:viewTestone.view atIndex:0];
  119. self.previousViewController = [self viewTestone];
  120. }
  121. @end
  122. //具体的实现方法。。应用~
  123. -(void)addButtonToNewView
  124. {
  125. //新建一个按键
  126. UIButton *toviewBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  127. //设置按钮的背景颜色 UIControlStateNormal按钮按之前的颜色 UIControlStateHighlighted反之
  128. [toviewBtn setImage:[UIImage imageNamed:@"v_exit.png"]forState:UIControlStateNormal ] ;
  129. //CGRect r;
  130. //r = CGRectMake(120, 300, 100, 30);
  131. //设置按钮的大小
  132. toviewBtn.frame = CGRectMake(120, 300, 100, 30);;
  133. //为按钮添加事件
  134. [toviewBtn addTarget:self action:@selector(toOntViewPress:) forControlEvents:UIControlEventTouchUpInside];
  135. //加载到当前的view
  136. [self.view addSubview:toviewBtn];
  137. }
  138. -(void)toOntViewPress:(id)sender
  139. {
  140. NSLog(@"successfull");
  141. //前面长长的AppDelegate SwitchViewController 都是为了下面这两句话。两句话就可以轻松的跳转到你想要去的页面。这样就显得很方便。
  142. AppDelegate *app = [[UIApplication sharedApplication]delegate];
  143. [app.switchViewController switchToView:0];
  144. }

AppDelegate 、UIApplication 的用法的更多相关文章

  1. iOS UIApplication sharedapplication用法

    应用中打开其他应用 我们来讨论一下,在iOS开发中,如何实现从app1打开app2. 基本的思路就是,可以为app2定义一个URL,在app1中通过打开这个URL来打开app2,在此过程中,可以传送一 ...

  2. [转]详解AppDelegate/UIApplication

    一.UIApplication 1.简单介绍 (1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序. (2)每一个应用都有自己的UIApplica ...

  3. OC中APPDelegate[[UIApplication shareApplication]delegate]]Swift实现

    直接上代码: var myDelegate:AppDelegate? myDelegate = UIApplication.sharedApplication().delegate as? AppDe ...

  4. ios中UIWebview和asiHttprequest的用法

    原文地址为:http://www.cnblogs.com/pengyingh/articles/2343062.htmlasiHttprequest的用法 它对Get请求的响应数据进行缓存(被缓存的数 ...

  5. iOS Method Swizzling和分类的妙用AppDelegate轻量化处理

    http://www.cocoachina.com/ios/20151117/14167.html 简介 在iOS工程中,AppDelegate往往会有上千行,甚至几千行,这样就会给维护AppDele ...

  6. 关于UIApplication单例传值

    由于UIApplication的是一个系统级别的单例,那么就能够省去自己创建单例的方法,将需要需要的类对象,在UIApplication单例内声明一个,通过点语法来实现单个 需要调用的实现单例模式的类 ...

  7. [MISS静IOS开发原创文摘]-AppDelegate存储全局变量和 NSUserDefaults standardUserDefaults 通过模型保存和读取数据,存储自定义的对象

    由于app开发的需求,需要从api接口获得json格式数据并保存临时的 app的主题颜色 和 相关url 方案有很多种: 1, 通过AppDelegate保存为全局变量,再获取 2,使用NSUSerD ...

  8. Core Data的简单用法

    #import "ViewController.h" // 第一步:引入头文件AppDelegate #import "AppDelegate.h" #impo ...

  9. ios开发之AppDelegate

    创建应用程序之后之后,默认有AppDelegate.h文件与AppDelegate.m文件.   AppDelegate为何物?  AppDelegate为整个应用的一个代理,提供程序启动.退出等类似 ...

随机推荐

  1. oh my zsh设置

    安装oh my zsh sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/inst ...

  2. poj 1177 Picture (线段树 扫描线 离散化 矩形周长并)

    题目链接 题意:给出n个矩形,每个矩形给左下 和 右上的坐标,求围成的周长的长度. 分析: 首先感谢大神的博客,最近做题经常看大神的博客:http://www.cnblogs.com/kuangbin ...

  3. Codeforces Round #237 (Div. 2) B. Marathon(卡long long)

    题目:http://codeforces.com/contest/404/problem/B #include <iostream> #include <cstring> #i ...

  4. bzoj3983

    显然我们得到这样几个结论 1.每次攻击对方一定是攻击最大的 2.自己合并也是合并最大和次大的 我们只要穷举下一开始是攻击还是合并,之后就是能攻击先攻击否则就合并 ..] of int64; var a ...

  5. SQL大数据操作统计

    SQL大数据操作统计 1:select count(*) from table的区别SELECT object_name(id) as TableName,indid,rows,rowcnt FROM ...

  6. UVa 1149 Bin Packing 【贪心】

    题意:给定n个物品的重量l[i],背包的容量为w,同时要求每个背包最多装两个物品,求至少要多少个背包才能装下所有的物品 和之前做的独木舟上的旅行一样,注意一下格式就好了 #include<ios ...

  7. UVALive 4287 Proving Equivalences(缩点)

    等价性问题,给出的样例为 a->b的形式,问要实现全部等价(即任意两个可以互相推出),至少要加多少个形如 a->b的条件. 容易想到用强连通缩点,把已经实现等价的子图缩掉,最后剩余DAG. ...

  8. MySQL索引与优化策略

    1. MySQL索引实现 在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,下面主要讨论MyISAM和InnoDB两个存储引擎的索引实现方式. MyISAM索引实现 M ...

  9. hdu 2459 (后缀数组+RMQ)

    题意:让你求一个串中连续重复次数最多的串(不重叠),如果重复的次数一样多的话就输出字典序小的那一串. 分析:有一道比这个简单一些的题spoj 687, 假设一个长度为l的子串重复出现两次,那么它必然会 ...

  10. iBatis 和MyBatis区别

    从  iBatis  到  MyBatis ,你准备好了吗? 对于从事 Java EE 的开发人员来说,iBatis 是一个再熟悉不过的持久层框架了,在 Hibernate.JPA 这样的一站式对象 ...