iOS开发UI篇—多控制器和导航控制器简单介绍

一、多控制器

一个iOS的app很少只由一个控制器组成,除非这个app极其简单。当app中有多个控制器的时候,我们就需要对这些控制器进行管理

有多个view时,可以用一个大的view去管理1个或者多个小view,控制器也是如此,用1个控制器去管理其他多个控制器

比如,用一个控制器A去管理3个控制器B、C、D。控制器A被称为控制器B、C、D的“父控制器”;控制器B、C、D的被称为控制器A的“子控制器”

为了便于管理控制器,iOS提供了2个比较特殊的控制器

UINavigationController

UITabBarController

二、导航控制器

利用UINavigationController,可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型例子就是系统自带的“设置”应用

如图:

三、UINavigationController的使用步骤

(1)初始化UINavigationController

(2)设置UIWindow的rootViewController为UINavigationController

(3)根据具体情况,通过push方法添加对应个数的子控制器

#import "YYAppDelegate.h"
#import "YYOneViewController.h"

@implementation YYAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];

//1.创建一个导航控制器
UINavigationController *nav=[[UINavigationController alloc]init];
//2.设置导航控制器为window的根视图
self.window.rootViewController=nav;

//3.添加子控制器到导航控制器中
//创建一些控制器
UIViewController *c1=[[UIViewController alloc]init];
//设置c1这个控制器的视图颜色
c1.view.backgroundColor=[UIColor redColor];

UIViewController *c2=[[UIViewController alloc]init];
c2.view.backgroundColor=[UIColor purpleColor];

UIViewController *c3=[[UIViewController alloc]init];
c3.view.backgroundColor=[UIColor brownColor];

//把这些控制器添加到导航控制器中
[nav pushViewController:c1 animated:YES];
[nav pushViewController:c2 animated:YES];
[nav pushViewController:c3 animated:YES];

[self.window makeKeyAndVisible];
return YES;
}

运行模拟器,可以看到一个简陋的有着三个子控制器管理着页面。

但呈现在我们眼前的只能有一个界面,我们没有必要一次性创建三个控制器在这里等着。

要求:创建三个子控制器,每个子控制器view的界面上放一个按钮,点击可以跳转到下一个界面。

实现(完成三个页面间通过按钮进行简单的跳转):

说明:这里把第一个子控制器的创建等代码写在了代理方法中。

YYAppDelegate.m文件代码

//
// YYAppDelegate.m
// 01-导航控制器的使用1
//
// Created by apple on 14-6-4.
// Copyright (c) 2014年 itcase. All rights reserved.
//

#import "YYAppDelegate.h"
#import "YYOneViewController.h"

@implementation YYAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];

//1.创建一个导航控制器
UINavigationController *nav=[[UINavigationController alloc]init];
//2.设置导航控制器为window的根视图
self.window.rootViewController=nav;

//3.添加子控制器到导航控制器中
YYOneViewController *one=[[YYOneViewController alloc]init];
[nav pushViewController:one animated:YES];

[self.window makeKeyAndVisible];
return YES;

// //创建一些控制器
// UIViewController *c1=[[UIViewController alloc]init];
// //设置c1这个控制器的视图颜色
// c1.view.backgroundColor=[UIColor redColor];
//
// UIViewController *c2=[[UIViewController alloc]init];
// c2.view.backgroundColor=[UIColor purpleColor];
//
// UIViewController *c3=[[UIViewController alloc]init];
// c3.view.backgroundColor=[UIColor brownColor];
//
把这些控制器添加到导航控制器中
// [nav pushViewController:c1 animated:YES];
// [nav pushViewController:c2 animated:YES];
// [nav pushViewController:c3 animated:YES];
}

创建三个子控件类及对应的xib文件

YYOneViewController.m文件

//
// YYOneViewController.m
// 01-导航控制器的使用1
//
// Created by apple on 14-6-4.
// Copyright (c) 2014年 itcase. All rights reserved.
//

#import "YYOneViewController.h"
#import "YYTwoViewController.h"

@interface YYOneViewController ()
/**
跳转到第二个界面
*/
- (IBAction)jump2two:(id)sender;

@end

@implementation YYOneViewController

- (IBAction)jump2two:(id)sender {
//1.创建第二个子控制器
YYTwoViewController *two=[[YYTwoViewController alloc]init];

//2.把子控制器添加到导航控制器中
//有什么办法能够拿到导航控制器?
//只要当前控制器是导航控制器的子控制器,那么就可以通过该属性直接获取到当前控制器所在的导航控制器
[self.navigationController pushViewController:two animated:YES];
}
@end

YYTwoViewController.m文件

//
// YYTwoViewController.m
// 01-导航控制器的使用1
//
// Created by apple on 14-6-4.
// Copyright (c) 2014年 itcase. All rights reserved.
//

#import "YYTwoViewController.h"
#import "YYThreeViewController.h"
@interface YYTwoViewController ()
- (IBAction)jump2Three:(id)sender;

@end

@implementation YYTwoViewController

//跳转到第三个子控制器
- (IBAction)jump2Three:(id)sender {
//1.创建第三个子控制器
YYThreeViewController *three=[[YYThreeViewController alloc]init];
//2.将子控制器添加到导航控制器中
[self.navigationController pushViewController:three animated:YES];

}
@end

提示:只要当前控制器是导航控制器的子控制器,那么就可以通过self.navigationController属性直接获取到当前控制器所在的导航控制器

项目文件结构和运行效果:

转载于:https://www.cnblogs.com/LifeTechnologySupporter/p/9691154.html

iOS开发UI篇—多控制器和导航控制器简单介绍相关推荐

  1. iOS开发UI篇—使用storyboard创建导航控制器以及控制器的生命周期

    一.基本过程 新建一个项目,系统默认的主控制器继承自UIViewController,把主控制器两个文件删掉. 在storyboard中,默认的控制器是View Controller,而我们需要的是导 ...

  2. android tableview实现多选功能,iOS开发UI篇-tableView在编辑状态下的批量操作(多选)...

    先看下效果图 直接上代码 #import "MyController.h" @interface MyController () { UIButton *button; } @pr ...

  3. IOS开发UI篇—导航控制器属性和基本使用

    IOS开发UI篇-导航控制器属性和基本使用 一.导航控制器的一些属性和基本使用 1.把子控制器添加到导航控制器中的四种方法 (1) 1.创建一个导航控制器 UINavigationController ...

  4. iOS开发UI篇—UITabBarController简单介绍

    iOS开发UI篇-UITabBarController简单介绍 一.简单介绍 UITabBarController和UINavigationController类似,UITabBarControlle ...

  5. iOS开发UI篇—Modal简单介绍

    iOS开发UI篇-Modal简单介绍 一.简单介绍 除了push之外,还有另外一种控制器的切换方式,那就是Modal 任何控制器都能通过Modal的形式展⽰出来 Modal的默认效果:新控制器从屏幕的 ...

  6. iOS开发UI篇—APP主流UI框架结构

    iOS开发UI篇-APP主流UI框架结构 一.简单示例 说明:使用APP主流UI框架结构完成简单的界面搭建 搭建页面效果:                                二.搭建过程和 ...

  7. iOS开发UI篇—transframe属性(形变)

    iOS开发UI篇-transframe属性(形变) 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两 ...

  8. iOS开发UI篇—UIWindow简单介绍

    iOS开发UI篇-UIWindow简单介绍 一.简单介绍 UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow iOS程序启动完毕后,创建的第一个视图控件就是UIWi ...

  9. iOS开发UI篇—简单介绍静态单元格的使用

    iOS开发UI篇-简单介绍静态单元格的使用 一.实现效果与说明 说明:观察上面的展示效果,可以发现整个界面是由一个tableview来展示的,上面的数据都是固定的,且几乎不会改变. 要完成上面的效果, ...

最新文章

  1. 游戏 Github Page
  2. 【PC工具】电脑考证题库,消防考试题库,司法考试,大学英语四六级题库等命题库保过版...
  3. kubeadmin 安装 k8s集群
  4. Glide 这样用,更省内存!!!
  5. 大型网站技术架构(一)大型网站架构演化
  6. asp还有人用吗_中药都安全吗?服用这些中药需要注意
  7. 用于查看编程代码的软件_当您创建用于学习编程的软件时,最重要的用户是您
  8. web字体设置成平方字体_如何托管自己的Web字体
  9. Java案例:静态内部类
  10. 2017.10.25 书柜的尺寸 失败总结
  11. 命令行查看Memcached运行状态
  12. Android Binder传递文件描述符原理分析
  13. 国内服务器免备案教程 可使用80端口进入后台
  14. 2台服务器只执行一台的定时任务(redisson)
  15. 中国十大电子商务网站排名
  16. 数学计算机游戏攻略,孩子们的游戏学习基本的数学
  17. 鸿蒙系统小米电视,鸿蒙系统被曝光!首款鸿浩818芯片,华为智慧屏对标小米电视...
  18. 【iOS与EV3混合机器人编程系列之六】iOS_WiFi_EV3_Library 剖析之发送命令给EV3
  19. 易用性软件测试用例,实验7 界面及易用性测试用例执行
  20. 数字式声纳设计原理 pdf_四川市政排水管道声纳监测服务

热门文章

  1. 算法及其复杂度度量简介
  2. robo3t 连接服务器数据库_车牌识别软件连接各种数据库方法大全
  3. php在函数使用正则表达式,php正则表达式以及正则函数的使用
  4. 汉字转换成html,汉字与16进制、汉字与Html转义符的转换
  5. pcb怎么画边框_关于PCB焊盘,你了解多少?
  6. python内置方法就是内置函数_python内置函数
  7. rabbitmq 限制速度_=(:) RabbitMQ详解
  8. MySQL面试题 | 附答案解析(九)
  9. 使用Python,OpenCV,K-Means聚类查找图像中最主要的颜色
  10. 使用Python,OpenCV和Hough圆检测图像中的圆