UIViewController/ApplicationSequ…

UIViewController  
ApplicationSequence UI-03

注意: NSLog(@"%s %d",__FUNCTION__,__LINE__);
//打印程序方法的执行过程,

   //__FUNCTION__,执行的方法名;__LINE__
显示的NSlLoge方法在哪一行

1、UIApplication
应用程序类型,一个程序只需要一个UIApplication对象,一个工程只能制作一个应用程序

//应用程序正在进行加载的时候调用此方法,此方法的重要的作用,创建window对象,并将window设置主窗口且使其可见

//所以当你要在应用程序上显示其他的内容要把添加到此方法中

#pragma mark
应用程序开始加载状态

-
(BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

self.window.backgroundColor = [UIColor whiteColor];
   
[self.window makeKeyAndVisible];

   return
YES;

}

2、 #pragma
mark  应用程序将要取消活跃状态
//触发的因素:来电、短信,退出应用程序,手动进入后台
//可以使用此方法暂停正在运行的任务,或者是让定时器暂停,或者暂停游戏

-
(void)applicationWillResignActive:(UIApplication
*)application {

NSLog(@"%s %d",__FUNCTION__,__LINE__);  
 

}

3、 #pragma
mark  程序已经进入后台
//用这个方法可以用来释放共享资源,存储用户信息,使定时器无效,存储用户当前状态下的信息,已备下次恢复;
//如果你的应用程序支持后台运行,当用户退出的时候,这个方法将被替代applicationWillTerminate:

-
(void)applicationDidEnterBackground:(UIApplication
*)application
{}

4、 #pragma
mark 应用程序即将进入前台
//唤醒进入后台时的任务

-
(void)applicationWillEnterForeground:(UIApplication
*)application {}

5、 #pragma
mark 应用程序已经处于活跃状态,应用程序已经在屏幕上运行了
//重启应用程序中没开启的任务或者程序程序进入后台时被暂停的任务开启,如果应用程序之前不再后台 
也可以刷新一下用户界面(如网易新闻第二天打开不是第一天的新闻,已被刷新)

-
(void)applicationDidBecomeActive:(UIApplication
*)application {}

7、重点概念

main.m
 程序的入口

#import

#import "AppDelegate.h"

int main(int argc, char * argv[])
{

   
@autoreleasepool
{

       //UIApplicationMain(),此函数的三大功能

        (面试必考题)
        
1.创建应用程序对象,每一个应用程序都是一个应用程序对象
        2.创建事件死循环(runloop,死循环)用于及时处理用户的操作,时时刻刻检测屏幕上有没有用户交互事件,一旦用户进行了交互,立即对用户操作做出操作

        
3.设置应用程序的代理对象,用来检测应用程序运行状态

        
[A class] 
如果类A调用Class方法,则返回类A

       
return UIApplicationMain(argc,
argv, nil, NSStringFromClass([AppDelegate
class]));

   
}}

————————————————————————————————————————

8、UIViewController 
继承自UIResponder
,是一个专门用来管理视图的一个类,只能用来管理单视图,是一个单是图控制器

   
//概念误区:视图管理器不是一个视图,是用来管理视图的,而且视图控制器自带一个管理视图的根视图

   
//UIViewController 主要作用:1.管理视图 2.响应事件 3.分担Appdelegate 的工作
     
     
     
     
     
     
    
4.可以实现MVC模式

 
 
——————————————————————————————

例子:

 
 //创建自定义视图控制器对象

   RootViewController
*rootVC =
[[RootViewController
alloc]init];

   
//将rootVC制定window的根视图

   self.window.rootViewController
= rootVC;

新建一个根管理器的子视图控制器来重写方法

RootViewController.h
 将其头文件引入AppDelegate.m文件

RootViewController.m

下面是几种方法实现:

//视图控制器的指定初始化方法,就是无论你调用哪个初始化方法初始化一个视图控制器对象,都会走的那个方法就叫做指定初始化方法

-(instancetype)initWithNibName:(NSString
*)nibNameOrNil
bundle:(NSBundle
*)nibBundleOrNil{

   if
(self
=
[super
initWithNibName:nibNameOrNil
bundle:nibBundleOrNil])
{

   
}
   
return
self;

}

——————————————————————————————

1、加载发根视图的触发的方法

//如果要是重写了loadView方法,第一种必须是实现[super
loadView]
//第二种自定义个视图赋值给视图控制器自身所带的视图View

- (void)loadView{
//   [super
loadView];//父类对该方法的实现是加载一个UIView对象,视图控制器自身所带的View就是由此方法创建出来的
//自定义视图控制器自身所带的视图View

   
UIView
*newview =
[[UIView
alloc]initWithFrame:[UIScreen
mainScreen].bounds];

   
self.view
=
newview;

   
[newview release];

}

——————————————————————————————————

2、当发现View自身所带View为nil会再去调用loadView,直到发现view不再为nil就不再调用loadView方法
//当视图控制器自带的View加载完成时触发

- (void)viewDidLoad
{

   
[super
viewDidLoad];

   
//使用self.View访问自定义视图所带的View

   
self.view.backgroundColor
=
[UIColor
greenColor];
   
//想添加的视图写在这个方法中

   
UIView
*view =
[[UIView
alloc]initWithFrame:CGRectMake(100,
100,
100,
100)];

   
view.backgroundColor
=
[UIColor
redColor];

   
[self.view
addSubview:view];

   
[view release];

}

———————————————————————————————

3、当内存出现警告时自动调用此方法

//在这方法中需要释放掉暂时不适用的资源
   
调试是否执行此方法:

 -
(void)didReceiveMemoryWarning
{

   
[super
didReceiveMemoryWarning];

   
NSLog(@"警告啦,警告啦,你TM的警告了!");
  
//[self
isViewLoaded] 用来判断视图控制器自带的view是否已经加载
   
//
self.view.window 
查看根视图有没有在window上显示
   
if
([self
isViewLoaded]
&& !self.view.window
)
{
       
//安全的将根视图删除

       self.view
=
nil; 

   
}

}

———————————————————————————————————

4、当设备发生旋转时,当前界面不发生变化,就意味着不支持旋转

-
(BOOL)shouldAutorotate{

   
return
YES;

}
//设置界面设置的旋转方向

-(NSUInteger)supportedInterfaceOrientations{

   
return   
UIInterfaceOrientationMaskAll;//三种旋转方式

}

//当旋转屏幕的时候触发,ios8之后才有效
//-
(void)viewWillTransitionToSize:(CGSize)size
withTransitionCoordinator:(id)coordinator{
//   
//size将要旋转到的屏幕的尺寸

//   
NSLog(@"%@",NSStringFromCGSize(size));

   
if (size.width < size.height) {

       
//把竖屏下的坐标赋值给空间

   
}else{
       
//把横屏下的坐标赋值给空间

}}


本节经典练习题:http://blog.sina.com.cn/s/blog_814ecfa90102vvcr.html

——————————————————————————————————————————

欢迎学习本文,未经博主允许,禁止转载!

时间: 2024-10-22 20:25:00

UIViewController/ApplicationSequ…的相关文章

UIViewController的误用

转载本文请保留以下原作者信息: 原作:OneVhttp://www.onevcat.com/2012/02/uiviewcontroller/ 什么是UIViewController的误用 UIViewController是iOS开发中最常见也最重要的部件之一,可以说绝大多数的app都用到了UIViewController来管理页面的view.它是MVC的核心结构和桥梁构成,可以说UIViewController是绝大多数开发者所花时间最多的部分了. 但是正是这样一个重要的类却经常被误用,从而导

开发IOS关于子UIViewController和父UIViewController相互调用方法

  今天在做iphone开发时碰到了一个常用的需求,即在一个viewController中添加另外一个viewController,同时能保证这两个ViewController之间能够相互交互且相互调用方法和函数,在网上查了很多资料,很多开发者说需要使用objective-c变态的 delegate,可是我感觉delegate是使用在两个同级之间的UIView比较好,至于能不能使用在父子关系而且是 UIVeiwController我也不太清楚,也没有亲自实验过,通过查看SDK的API及其他资料我

【iOS】UIViewController、UINavigationController与UITabBarController的整合使用

原文  http://blog.csdn.net/rongxinhua/article/details/20214293 UINavigationController与UITabBarController是iOS开发中最常用的两种视图控制器,它们都属于UIViewController的子类,继承关系如下: @interface UITabBarController : UIViewController @interface UINavigationController : UIViewContr

iOS对UIViewController生命周期和属性方法的解析

iOS对UIViewController生命周期和属性方法的解析 一.引言         作为MVC设计模式中的C,Controller一直扮演着项目开发中最重要的角色,它是视图和数据的桥梁,通过它的管理,将数据有条有理的展示在我们的View层上.iOS中的UIViewController是UIKit框架中最基本的一个类.从第一个UI视图到复杂完整项目,都离不开UIViewController作为基础.基于UIViewController的封装和扩展,也能够出色的完成各种复杂界面逻辑.这篇博客

UIViewController

UIViewController在UIKit中主要功能是用于控制画面的切换,其中的view属性(UIView类型)管理整个画面的外观.大部分控制器类都会继承UIKit的UIViewController基类,该基类中包含了大量方法,可以重写这些方法来处理视图的加载.视图显示等各种事件. 包括以下常见的重要重写方法: - (void)viewDidLoad { [super viewDidLoad]; //当控制器管理的视图被装载完成后,调用该方法,如果开发者需要在视图装载完成后执行某些代码,即可通

ios-iOS UIViewController 单例及helper class的应用

问题描述 iOS UIViewController 单例及helper class的应用 我按照网上的方式写singleton,每次进到SecondViewController,打印的地址都是同一个,但是为什么界面上的UISwitch都是初始化的?我是进了原来的UIViewController吗?还有人建议写helper class,刚开始接触iOS,不是很明白,有没有Demo或者介绍一下基本原理可以么? 解决方案 界面上的UISwitch并不会感知到你singleton的变化,你需要在页面加载

UIWindow,UINavigationController与UIViewController之间的关系

UIWindow,UINavigationController与UIViewController之间的关系 虽然每次你都用UINavigationController与UIWindow,但你不一定知道他们之间到底怎么运作的哦:) AppDelegate.h的代码 RootViewController.m // // RootViewController.m // UIWindow // // Copyright (c) 2014年 Y.X. All rights reserved. // #im

使用addChildViewController手动控制UIViewController的切换

addChildViewController If the new child view controller is already the child of a container view controller, it is removed from that container before being added.This method is only intended to be called by an implementation of a custom container vie

iphone-添加UIViewController 的问题

问题描述 添加UIViewController 的问题 需要添加一个UIViewController 类到其他类中作为子视图. myEventsView = [[EventNameViewController alloc]initWithNibName:@"EventNameViewController" bundle:nil]; [myEventsView.view setFrame:CGRectMake(0, 39, 320, 400)]; [self.view addSubvie