iOS,视图控制器相关(UIViewController)

1.视图控制器各个方法调用时机

2.选项卡(Tab Bar)和导航栏(Navigation Bar)

视图控制器各个方法调用时机

init:方法

在init方法中实例化必要的对象(遵从LazyLoad思想)

init方法中初始化ViewController本身

loadView:方法

这是当没有正在使用nib视图页面,子类将会创建自己的自定义视图层。绝不能直接调用

viewDidLoad:方法

在视图加载后被调用

viewWillAppear:方法

视图即将可见时调用

viewDidAppear:方法

视频完全过渡到屏幕上时调用

viewWillDisappear:方法

视图被驳回时调用,覆盖或以其他方式隐藏

viewDidDisappear:方法

视图被驳回后调用,覆盖或以其他方式隐藏

当A视图切换到B视图时,顺序流程

1.B视图的viewDidLoad

2.A视图的viewWillDisappear

3.B视图的viewWillAppear

4.A视图viewDidDisappear

5.B视图viewDidAppear

选项卡(Tab Bar)和导航栏(Navigation Bar)

//AppDelegate.h文件

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@property(strong,nonatomic) UITabBarController *tabBarController;//底部选项卡控制器

@end

//AppDelegate.m文件

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

self.window=[[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];

//消息控制器

MessageViewController *msgController=[[MessageViewController alloc] init];

UINavigationController *navMsg=[[UINavigationController alloc] initWithRootViewController:msgController];

//选项卡的图片样式以这种方式处理,避免图片无法完全显示

UITabBarItem *msgTabItem = [[UITabBarItem alloc]initWithTitle:@"消息" image:[[UIImage imageNamed:@"[email protected]"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedImage:[[UIImage imageNamed:@"[email protected]"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];

navMsg.tabBarItem=msgTabItem;

//联系人控制器

ContactViewController *conController=[[ContactViewController alloc] init];

UINavigationController *navCon=[[UINavigationController alloc] initWithRootViewController:conController];

UITabBarItem *conTabItem = [[UITabBarItem alloc]initWithTitle:@"联系人" image:[[UIImage imageNamed:@"tab_ [email protected]"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedImage:[[UIImage imageNamed:@"tab_ [email protected]"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];

navCon.tabBarItem=conTabItem;

//动态控制器

DynamicViewController *dynController=[[DynamicViewController alloc] init];

UINavigationController *navDyn=[[UINavigationController alloc] initWithRootViewController:dynController];

UITabBarItem *dynTabItem = [[UITabBarItem alloc]initWithTitle:@"动态" image:[[UIImage imageNamed:@"tab_ [email protected]"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedImage:[[UIImage imageNamed:@"tab_ [email protected]"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];

navDyn.tabBarItem=dynTabItem;

self.tabBarController=[[UITabBarController alloc] init];

[email protected][navMsg,navCon,navDyn];

self.tabBarController.selectedIndex=0;

//由于iPhone是单窗口程序,所以也就只有这么一个Window对象,而且是UIWindow,不是NSWindow。而根据文档上所说:这个是便捷方法,去使被使用对象的主窗口显示到屏幕的最前端。

[self.window makeKeyAndVisible];

return YES;

}

时间: 2024-10-12 19:15:39

iOS,视图控制器相关(UIViewController)的相关文章

iOS 视图控制器 (内容根据iOS编程编写)

视图控制器是  UIViewController 类或其子类对象.每个视图控制器都负责管理一个视图层次结构,包括创建视图层级结构中的视图并处理相关用户事件,以及将整个视图层次结构添加到应用窗口. 创建一个程序,并将上节  JXHypnosisView 类导入到工程中. 创建 UIViewController 子类 打开工程,创建一个  UIViewController  子类文件,并将其命名为  JXHypnosisViewController UIViewController 的 view 属

iOS 视图控制器转场详解

前言的前言 唐巧前辈在微信公众号「iOSDevTips」以及其博客上推送了我的文章后,我的 Github 各项指标有了大幅度的增长,多谢唐巧前辈的推荐.有些人问我相关的问题,好吧,目前为止就几个,由于没有评论系统,实在不方便交流,但我也没把博客好好整理,一直都在简书上写博客,大家有问题请移步我的简书本文章的页面.关于交流,我想说这么几点: 1.问问题就好,不要加上大神大牛之类的称呼,与本文有关的问题我尽量回答:不负责解析转场动画,看心情回答. 2.去我的简书下留言是最有效的交流方式,要加我好友就

iOS视图控制器编程指南 --- 呈现一个视图控制器

有两种方法实现一个视图控制器到屏幕上:把它嵌入到一个容器视图控制器或者是直接呈现它.容器视图控制器提供一个应用程序主要的导航功能,但是present 视图控制器也是一个重要的导航工具.你可以直接使用presentation 在当前视图控制器的最上层显示一个新的视图控制器.典型地,当你想要实现模态界面的时候直接present 视图控制器,但是你也可以基于其它目的使用它们. 对呈现视图控制器的支持内建于类UIViewController中,而且对所有的视图控制器对象都是有效的.你可以在其它任何视图控

ios &ndash; 视图控制器如何管理视图?

移动设备的屏幕有限,所有的东西都需要放到一个单一窗口组成的单一界面显示,在ios中体现为视图切换(在<ios – 视图>中已经说明了视图),当一个视图替换掉另一个视图的时候,会经常使用动画效果,这个任务就是交给视图管理器来完成的. ios5之后应用程序窗口有一个根视图控制器(rootViewController),当不为rootViewController赋值时,会出现"Application windows are expected to have a root view cont

iOS(视图控制器转场)

转场需要提供转场代理,不使用默认的代理则需要自己实现代理方式,有UINavigationController.UITabBarController.UIViewController三种代理,实现以下三种协议<UINavigationControllerDelegate> //push和pop切换 <UITabBarControllerDelegate> //tab切换<UIViewControllerTransitioningDelegate> //UICollecti

iOS视图控制器编程指南 --- 实现一个容器视图控制器

容器视图控制器是一种结合多个视图控制器的内容到一个单一的用户界面上的方式.容器视图控制器经常被用来使导航更方便,基于已经存在的内容创建一个新的用户界面类型.例如,在UIKit中的容器视图控制器包括UINavigationcontroller,UITabBarcontroller 和 UISplitViewcontroller,它们都可以使用户界面在不同视图部分之间的切换和导航更加的容易. 设计一个自定义的容器视图控制器 在几乎所有的方面,一个容器视图控制器就像其它任何一个内容视图控制器一样,它管

IOS视图控制器的生命周期

原创Blog,转载请注明出处 http://blog.csdn.net/hello_hwc?viewmode=contents 所谓的生命周期,也就是几个函数的调用顺序,这里以用Storyboard来创建一个ViewController为例 然后我们测试如下代码 // // ViewController.m // // Created by huangwenchen on 14/12/26. // Copyright (c) 2014年 huangwenchen. All rights rese

UI 多个视图控制器(UIViewController)间的 协议传值

1 #import <UIKit/UIKit.h> 2 3 4 5 //1.协议传值 6 7 // 协议由后面的视图控制器制定 8 9 @protocol secondDelegate <NSObject> 10 11 12 13 //协议的方法需要带一个或多个参数 14 15 - (void)passValueWithString:(NSString *)string; 16 17 18 19 @end 20 21 22 23 @interface secondViewContr

05_视图控制器_2 UIViewController的生命周期

在视图控制器从生到死的过程中,会经历以下进程 1 - (void)viewDidLoad { 2 [super viewDidLoad]; 3 // Do any additional setup after loading the view from its nib. 4 } 5 6 - (void)viewWillAppear:(BOOL)animated{ 7 [super viewWillAppear:animated]; 8 NSLog(@"视图将要显示"); 9 } 10