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的使用步骤

  1. 初始化UITabBarController
  2. 设置UIWindow的rootViewController为UITabBarController
  3. 根据具体情况,通过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详解的更多相关文章

  1. iOS开发 - OC - block的详解 - 基础篇

    深入理解oc中的block 苹果在Mac OS X10.6 和iOS 4之后引入了block语法.这一举动对于许多OC使用者的编码风格改变很大.就我本人而言,感觉block用起来还是很爽的,但一直以来 ...

  2. iOS开发 - OC - block的详解 - 深入篇

    深入理解oc中的block 苹果在Mac OS X10.6 和iOS 4之后引入了block语法.这一举动对于许多OC使用者的编码风格改变很大.就我本人而言,感觉block用起来还是很爽的,但一直以来 ...

  3. iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)

    iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController)   前面我们介绍了StoryBoard这个新技术,和纯技术 ...

  4. iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)

    iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController)   这里我们就直接上实例: 一:新建一个项目singleV ...

  5. iOS开发——实战OC篇&环境搭建之StoryBoard(玩转UINavigationController与UITabBarController)

      环境搭建之StoryBoard(玩转UINavigationController与UITabBarController)   研究了这么就IOS开发,都没有所处一个像样或者自己忙一点的项目.最近自 ...

  6. iOS开发——实用技术OC篇&事件处理详解

    事件处理详解 一:事件处理 事件处理常见属性: 事件类型 @property(nonatomic,readonly) UIEventType     type; @property(nonatomic ...

  7. iOS开发——多线程OC篇&多线程详解

    多线程详解 前面介绍了多线程的各种方式及其使用,这里补一点关于多线程的概念及相关技巧与使用,相信前面不懂的地方看了这里之后你就对多线程基本上没有什么问题了! 1——首先ios开发多线程中必须了解的概念 ...

  8. ios开发——实战OC篇&FMDB详解

    FMDB详解 前一篇文章中我们介绍的SQLite的使用,在iOS中原生的SQLite API在使用上相当不友好. 于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.Plausibl ...

  9. iOS开发——图层OC篇&Quartz 2D各种绘制实例

    Quartz 2D各种绘制实例 首先说一下,本篇文章只是介绍怎么使用Quartz 2D绘制一些常用的图像效果,关于Quartz和其他相关技术请查看笔者之前写的完整版(Quartz 2D详解) 一:画线 ...

随机推荐

  1. SpringMVC + Spring + MyBatis 学习笔记:在类和方法上都使用RequestMapping如何访问

    系统:WIN8.1 数据库:Oracle 11GR2 开发工具:MyEclipse 8.6 框架:Spring3.2.9.SpringMVC3.2.9.MyBatis3.2.8 先看代码: @Requ ...

  2. BITED-Windows8应用开发学习札记之三:如何在Win8应用中实现数据绑定

    在微软官方提供的资源中,我们可以看到SampleDataSource.cs已经拥有了定义好了相应的数据结构以及实现类: 建立本地数据 由于我们已经有数据以及相应的数据类,我们需要做的仅仅是将数据放进数 ...

  3. 为网页设计师准备的30个使用的HTML5框架

    原文地址:http://www.goodfav.com/zh/html5-framework-8189.html 网页设计师在开始使用一些应用程序之前需要考虑几个事实,以确保在应用Web程序框架时,这 ...

  4. IOS中 什么是UITableView的索引放大镜字符

    IOS中 什么是UITableView的索引放大镜字符 [_dataSource addObject:UITableViewIndexSearch]; 版权声明:本文为博主原创文章,未经博主允许不得转 ...

  5. 一排下去再上来的div

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  6. 用LinkedHashMap实现LRU算法

    (在学习操作系统时,要做一份有关LRU和clock算法的实验报告,很多同学都应该是通过数组去实现LRU,可能是对堆栈的使用和链表的使用不是很熟悉吧,在网上查资料时看到了LinkedHashMap,于是 ...

  7. USB枚举过程(2)

    用bus hound 得到的数据 GET MAX LUN 命令 详见USB_MSC_BlukOnly_v1.0 接下来用到的是UFI  SCSI

  8. 【破解三网】iphone5 国行 A1429

    教程仅适用于A1429的I5. 1.首先把sim卡插入手机.关闭蜂窝数据里面的"蜂窝移动数据"还有打开漫游里面的"语音漫游".如图               ...

  9. Python基础 字符串的魔法

    capitalize(self) 返回值:将字符串的第一个首字母变成大写,其他字母变小写 s = 'hello World' ss = s.capitalize() print(ss) Hello w ...

  10. Intellij IDEA 14.x 中的Facets和Artifacts的区别

    Facets和Artifacts的区别: Facets 表示这个module有什么特征,比如 Web,Spring和Hibernate等: Artifact 是maven中的一个概念,表示某个modu ...