iOS开发——控制器OC篇&UINavigationController&UITabBarController详解
UINavigationController&UITabBarController详解
一:UINavigationController

控制器的属性:
UINavigationController以栈的形式保存子控制器
- @property(nonatomic,copy) NSArray *viewControllers;
- @property(nonatomic,readonly) NSArray *childViewControllers;
导航控制器之间的跳转:
使用push方法能将某个控制器压入栈
- - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;
使用pop方法可以移除控制器
将栈顶的控制器移除
- - (UIViewController *)popViewControllerAnimated:(BOOL)animated;
回到指定的子控制器
- - (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated;
回到根控制器(栈底控制器)
- - (NSArray *)popToRootViewControllerAnimated:(BOOL)animated;
常用控制器(导航)属性设置
导航栏的内容由栈顶控制器的navigationItem属性决定
UINavigationItem有以下属性影响着导航栏的内容
左上角的返回按钮
- @property(nonatomic,retain) UIBarButtonItem *backBarButtonItem;
中间的标题视图
- @property(nonatomic,retain) UIView *titleView;
中间的标题文字
- @property(nonatomic,copy) NSString *title;
左上角的视图
- @property(nonatomic,retain) UIBarButtonItem *leftBarButtonItem;
UIBarButtonItem *rightBarButtonItem 右上角的视图
- @property(nonatomic,retain) UIBarButtonItem *rightBarButtonItem;
Segue的属性(Storyboard上每一根用来界面跳转的线,都是一个UIStoryboardSegue对象(简称Segue))
根据Segue的执行(跳转)时刻,Segue可以分为2大类型
- 自动型:点击某个控件后(比如按钮),自动执行Segue,自动完成界面跳转
- 手动型:需要通过写代码手动执行Segue,才能完成界面跳转
Segue属性
- 唯一标识
- @property (nonatomic, readonly) NSString *identifier;
- 来源控制器
- @property (nonatomic, readonly) id sourceViewController;
- 目标控制器
- @property (nonatomic, readonly) id destinationViewController;
Segue方法
- [self performSegueWithIdentifier:@"login2contacts" sender:nil];
- // Segue必须由来源控制器来执行,也就是说,这个perform方法必须由来源控制器来调用
- - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender;
- [self performSegueWithIdentifier:@“login2contacts” sender:@“jack”];
二:UITabBarController

UITabBarController的使用步骤
- 初始化UITabBarController
- 设置UIWindow的rootViewController为UITabBarController
- 根据具体情况,通过addChildViewController方法添加对应个数的子控制器
UITabBarController添加控制器的方式有2种
添加单个子控制器
- - (void)addChildViewController:(UIViewController *)childController;
设置子控制器数组
- @property(nonatomic,copy) NSArray *viewControllers;
注意:UITabBarButton里面显示什么内容,由对应子控制器的tabBarItem属性决定
UITabBarItem有以下属性影响着UITabBarButton的内容
- 标题文字
- @property(nonatomic,copy) NSString *title;
- 图标
- @property(nonatomic,retain) UIImage *image;
- 选中时的图标
- @property(nonatomic,retain) UIImage *selectedImage;
- 提醒数字
- @property(nonatomic,copy) NSString *badgeValue;
控制器的展示方式(开发中很重要)
以Modal的形式展示控制器
- - (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion
关闭当初Modal出来的控制器
- - (void)dismissViewControllerAnimated: (BOOL)flag completion: (void (^)(void))completion;
三:UINavigationController&UITabBarController使用实战:

本文只是简单的介绍关于UINavigationController喝UITabBarController的一些常用属性方法和使用技巧,关于基本使用和实战篇,请看后面的文章,后面我将结合着两个控制器应用到实际开发中去实现目前iOS开发的主流框架:
其实就是相当于我们项目开发中的App环境的搭建
环境搭建之玩转UINavigationController与UITabBarController
环境搭建之纯代码:http://www.cnblogs.com/iCocos/p/4690677.html
环境搭建之Xib:http://www.cnblogs.com/iCocos/p/4690714.html
环境搭建之StoryBoard:http://www.cnblogs.com/iCocos/p/4690659.html
这三篇文章时本人在新浪博客写的,但是由于不喜欢不喜欢他的风格,所以就慢慢在转移,如果你在新浪博客看到关于IT梦工厂的博文,你们懂的!
iOS开发——控制器OC篇&UINavigationController&UITabBarController详解的更多相关文章
- iOS开发 - OC - block的详解 - 基础篇
深入理解oc中的block 苹果在Mac OS X10.6 和iOS 4之后引入了block语法.这一举动对于许多OC使用者的编码风格改变很大.就我本人而言,感觉block用起来还是很爽的,但一直以来 ...
- iOS开发 - OC - block的详解 - 深入篇
深入理解oc中的block 苹果在Mac OS X10.6 和iOS 4之后引入了block语法.这一举动对于许多OC使用者的编码风格改变很大.就我本人而言,感觉block用起来还是很爽的,但一直以来 ...
- iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)
iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController) 前面我们介绍了StoryBoard这个新技术,和纯技术 ...
- iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)
iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController) 这里我们就直接上实例: 一:新建一个项目singleV ...
- iOS开发——实战OC篇&环境搭建之StoryBoard(玩转UINavigationController与UITabBarController)
环境搭建之StoryBoard(玩转UINavigationController与UITabBarController) 研究了这么就IOS开发,都没有所处一个像样或者自己忙一点的项目.最近自 ...
- iOS开发——实用技术OC篇&事件处理详解
事件处理详解 一:事件处理 事件处理常见属性: 事件类型 @property(nonatomic,readonly) UIEventType type; @property(nonatomic ...
- iOS开发——多线程OC篇&多线程详解
多线程详解 前面介绍了多线程的各种方式及其使用,这里补一点关于多线程的概念及相关技巧与使用,相信前面不懂的地方看了这里之后你就对多线程基本上没有什么问题了! 1——首先ios开发多线程中必须了解的概念 ...
- ios开发——实战OC篇&FMDB详解
FMDB详解 前一篇文章中我们介绍的SQLite的使用,在iOS中原生的SQLite API在使用上相当不友好. 于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.Plausibl ...
- iOS开发——图层OC篇&Quartz 2D各种绘制实例
Quartz 2D各种绘制实例 首先说一下,本篇文章只是介绍怎么使用Quartz 2D绘制一些常用的图像效果,关于Quartz和其他相关技术请查看笔者之前写的完整版(Quartz 2D详解) 一:画线 ...
随机推荐
- svn import 向Google code里导入初始代码
其实很简单的问题,花费了这么多时间,想把初始代码导入到Google code里,用VisaulSVN插件的Switch功能也不可以,Google code上虽然有上传,但是只能单个文件传...... ...
- C++设计模式——单例模式
问题描述 现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能:在实际开发过程中,会专门有一个日志模块,负责写日志,由于在系统的任何地方,我们都有可能要调用日志模块中的函数,进 ...
- 14个超赞的响应式HTML5模板免费下载
现在HTML5已经势不可挡.很多朋友开始学习HTML5,当你已经学习过一些HTML5的教程之后,是不是想立即开始实战了呢?对,现在就开始吧,不过 找一些优秀的HTML5模板案例练习是相当不错的注意.当 ...
- windows7__32位下安装python2.6.6
1.下载windows7__32位的python2.6.6.mis文件,直接运行.默认安装即可 2.设置系统环境变量,目的在cmd下能敲python后能够自动调用到安装目录程序 设计如下:(我的电脑- ...
- [WinForm] 使用 WebBrowser 操作 HTML 頁面的 Element-摘自网络
前言 在 Window Form 應用程式如果需要瀏覽網頁時可以崁入 WebBrowser 控制項,但如果需要操作崁入的 HTML 的網頁元素,就需要額外的操作,以下紀錄幾種操作 HTML 元素的方法 ...
- mysql系统表加trigger和对特定的库禁用 DDL 语句
给 mysql 系统表加上 trigger 1 Reply 默认情况下,mysql 是不能给系统表,例如 mysql.user 加上触发器的.会提示 ERROR 1465 (HY000): Trigg ...
- Hadoop学习笔记(2)
Hadoop学习笔记(2) ——解读Hello World 上一章中,我们把hadoop下载.安装.运行起来,最后还执行了一个Hello world程序,看到了结果.现在我们就来解读一下这个Hello ...
- 应用TcpListener实现的socket服务器端
前言 项目中要实现一个简单的socket服务器端,采用了TcpListener这个类.除了基本的功能之外,有几处需要注意的点. 要能同时接收多个客户端的连接,当然,不需要几千个那么多. 要能探测到客户 ...
- USB2.0规范
USB是一种支持热插拔的高速串行传输总线,它使用差分信号来传输数据,最高速度可达480Mb/S. USB支持“总线供电”和“自供电”两种供电模式.在总线供电模式下,设备最多可以获得500mA的电流.U ...
- LabView中,下拉列表和枚举有什么区别?
枚举变量只能针对无符号整型数据U32,U16,U8; 而下拉列表则可以包括扩展精度,双精度,单精度,64位.长.双字节.单字节整型以及各种无符号整型(如下图黑色部分). 下拉列表