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

  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

时间: 2024-08-02 23:03:42

iOS开发——控制器OC篇&UINavigationController&UITabBarController详解的相关文章

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

iOS开发——实战OC篇&环境搭建之Xib(玩转UINavigationController与UITabBarController) 前面我们介绍了StoryBoard这个新技术,和纯技术编程的代码创建界面,本篇我们将介绍一个老的技术,但是在很多的公司或者库里面还是使用这个技术,既然如此它肯定有他的好处,至于好处这里我就不一一介绍了.在Xcode5之前是只能使用Xib或者代码的,而代码又对于很多初学者来说算是一个难题.毕竟不知道怎么下手.所以我就总结了一下这段时间自己编写程序的一个实例来说明怎么

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

iOS开发——实战OC篇&环境搭建之纯代码(玩转UINavigationController与UITabBarController) 这里我们就直接上实例: 一:新建一个项目singleView Controller,命名未iCocos 二:由于我们使用的纯代码实现的,所以删除其中的StoryBoard和Viewtroller的两个文件 三:新建一个继承自TabBar Controller的类,我们命名问iCocos ViewController 三:在Appdelegate的实现文件中导入刚刚

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

环境搭建之StoryBoard(玩转UINavigationController与UITabBarController) 研究了这么就IOS开发,都没有所处一个像样或者自己忙一点的项目.最近自己正打算开始着手做一个项目,可是不知道怎么下手,感觉前面学了好多,可是回头想想却又很难下手,其中最主要的就是第一步环境的搭建,当然在这之前还有选题和素材,但是那些对于ios开发来说都不是技术上的问题或者在以后公司里面一半都不是我们所考虑的.所以今天开始我将以三篇简短但又实用的文章给大家介绍一下,怎么搭建一个

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

事件处理详解 一:事件处理 事件处理常见属性: 事件类型 @property(nonatomic,readonly) UIEventType     type; @property(nonatomic,readonly) UIEventSubtype  subtype; 事件产生的时间 @property(nonatomic,readonly) NSTimeInterval  timestamp; 事件传递 - hitTest:withEvent: SWIFT func hitTest(_ po

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

多线程详解 前面介绍了多线程的各种方式及其使用,这里补一点关于多线程的概念及相关技巧与使用,相信前面不懂的地方看了这里之后你就对多线程基本上没有什么问题了! 1——首先ios开发多线程中必须了解的概念: 进程 正在进行中的程序被称为进程,负责程序运行的内存分配 每一个进程都有自己独立的虚拟内存空间 线程 线程是进程中一个独立的执行路径(控制单元) 一个进程中至少包含一条线程,即主线程 可以将耗时的执行路径(如:网络请求)放在其他线程中执行 创建线程的目的就是为了开启一条新的执行路径,运行指定的代

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

FMDB详解 前一篇文章中我们介绍的SQLite的使用,在iOS中原生的SQLite API在使用上相当不友好. 于是,就出现了一系列将SQLite API进行封装的库,例如FMDB.PlausibleDatabase.sqlitepersistentobjects等,FMDB (https://github.com/ccgus/fmdb) 是一款简洁.易用的封装库,这一篇文章简单介绍下FMDB的使用. 在FMDB下载文件后,工程中必须导入,并使用 libsqlite3.dylib 依赖包. F

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

Quartz 2D各种绘制实例 首先说一下,本篇文章只是介绍怎么使用Quartz 2D绘制一些常用的图像效果,关于Quartz和其他相关技术请查看笔者之前写的完整版(Quartz 2D详解) 一:画线 1 // 1.获取跟当前View相关联的layer上下文(画板) 2 // 总结:目前获取的所有上下文都是以UIGraphics开头 3 // CGContextRef:上下文类型 4 // CG:CoreGraphics Ref:引用 5 CGContextRef ctx = UIGraphic

iOS开发——实用技术OC篇&单例模式的实实现(ACR&MRC)

单例模式的实实现(ACR&MRC) 在iOS开发中单例模式是一种非常常见的模式,虽然我们自己实现的比较少,但是,系统却提供了不少的到来模式给我们用,比如最常见的UIApplication,Notification等, 那么这篇文章就简单介绍一下,我们开发中如果想要实现单例模式要怎么去实现! 单例模式顾名思义就是只有一个实例,它确保一个类只有一个实例,并且自行实例化并向整个系统提供这个实例.它经常用来做应用程序级别的共享资源控制.这个模式使用频率非常高,通过一个单例类,可以实现在不同窗口之间传递数

iOS开发——多线程OC篇&(三)线程安全

线程安全 一.多线程的安全隐患 资源共享 1块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源 比如多个线程访问同一个对象.同一个变量.同一个文件 当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题 问题代码: 1 // 2 // YYViewController.m 3 // 05-线程安全 4 // 5 // Created by apple on 14-6-23. 6 // Copyright (c) 2014年 itcase. All rights reserved