UIView之间常用视图之间切换方式

转载自:http://www.jianshu.com/p/0d53f9402c07
在平时编写代码的过程中,页面之间的跳转可以说就和MVC模式一样是开发必须的。但是可能我们知道一种或者几种页面之间的跳转,今天我就来总结一下我在开发之中遇到的所有的页面跳转代码。(关于控制器之间的简单的跳转,比如导航控制器跳转、故事版跳转、简单的模态跳转不在这里多说)

一、代理跳转。

通常我们在跳转中经常是通过你点击了某个事件或者某个操作使你进行控制器之间的跳转。那么我们可以在这个按钮事件或者操作里面写一个代理进行跳转或者传值。


二、block跳转。

大家都知道block块的强大之处,我个人认为block是代理的升级版本。他实现了代理能实现的功能,而且代码更加的简洁。只需要在视图A中进行一次声明然后在控制器B 中进行跳转代码的实现。
但是需要知道的是无论是代理还是block我们都是需要视图和控制器之间存在着联系的,不然没有办法去调用代理或者block。这是大家很容易忽略的地方,也是经常容易错的地方。


三、通知跳转。

我们也可以使用通知进行页面得跳转。通知在我看来就是比代理好的一点就是不需要视图和控制器之间有必然的关联就可以调用(当然他们最大的区别是一个可以多对多传值)。


四、直接在视图跳转

这一个方法是非常的直接,就是在视图中直接的跳转界面。说白了就是调出application然后也是以导航控制器的形式进行跳转。非常的简单实用(当然是在不需要进行传值等操作的时候。)
//视图直接涂转控制器
UINavigationController nav = (UINavigationController )[UIApplication sharedApplication].keyWindow.rootViewController;
SecViewController *sec = [[SecViewController alloc]init];
[nav pushViewController:sec animated:YES];
其他代码和上面一样

在IOS开发中,经常遇到两个View之间互相切换,列举下各种方式,但是下面每种方式都要自己灵活运用,不一定就是进入下一个、后一个必须用“一”里面的方式。
一:进入下\后一个View

A:insertSubView系列:(注意,如果你新增视图不够大,则遮不住上一层视图,即前后2个视图都存在,当然你可以做透明来查看所有,与二A对应)
• – addSubview: (常用增加视图在本View上面)
• – bringSubviewToFront;将新视图放在其他同级视图的top位置
• – insertSubview:atIndex: 将新视图放在第index层,index是从底层向上数的下标位置
• – insertSubview:aboveSubview:将新视图放在第二个参数view的上面
• – insertSubview:belowSubview:将新视图放在第二个参数view的下面
• – exchangeSubviewAtIndex:withSubviewAtIndex:改变新视图从第一个位置到第二个位置

B:presentViewController系列:(常用视图切换,与二B对应)

• – presentViewController:animated:completion: 弹出,出现一个新视图 可以带动画效果,完成后可以做相应的执行函数经常为nil
• – presentModalViewController:animated: 弹出,出现一个新视图 可以带动画效果

C:UINavigationController系列:(常用导航栏视图切换,与二C对应)

• – pushViewController:animated: 推进一个新视图到栈里,出现新视图,可以带动画效果

例 pushViewController:animated:
二:返回上\前一个View

A:insertSubView系列:(注意,如果你新增视图不够大,则遮不住上一层视图,即前后2个视图都存在,当然你可以做透明来查看所有,与一A对应)
• – sendSubviewToBack: 将新视图放在其他同级视图的behind位置
• – removeFromSuperview:将新视图从父视图上移除
B:presentViewController系列:(与一B对应)
• – dismissViewControllerAnimated:completion:退出一个新视图 可以带动画效果,完成后可以做相应的执行函数经常为nil
• – dismissModalViewControllerAnimated: 退出一个新视图 可以带动画效果

C:UINavigationController系列:(常用导航栏视图切换,与一C对应)
• – popViewControllerAnimated: 从一个栈中退出视图,返回上一层,可以带动画效果
• – popToRootViewControllerAnimated:从一个栈中退出视图,返回到navigation的RootView,可以带动画效果
• – popToViewController:animated:从一个栈中退出视图,返回到navigation中指定的view,可以带动画效果
基本上上面已经介绍完全部常用视图切换方式:

三:UITabBarController:(需要先将几种视图在tabBar种设置好)
• – setViewControllers:animated:设置要出现的视图
• selectedViewController 设置要出现的视图
• selectedIndex 设置要出现的视图下标

UIView 视图切换的更多相关文章

  1. iOS开发系列--视图切换

    概述 在iOS开发中视图的切换是很频繁的,独立的视图应用在实际开发过程中并不常见,除非你的应用足够简单.在iOS开发中常用的视图切换有三种,今天我们将一一介绍: UITabBarController ...

  2. IOS 视图切换动画

    我在网上找到的这个小方法,被我举一反三使用的屡试不爽.比如用在,当视图需要执行某一方法跳转到新的一个UIView上,从底层渐变浮到最上层.就是一个不错的视觉效果或者当需要类似keyboard的效果从底 ...

  3. IPhone多视图切换

    处理IPhone多个view切换是我们常遇到的问题,接下来有个比较实用的方法: 而且还附有创建空项目,内存告急处理和动画效果的实现! 具体步骤: 1.创建一个空的项目,然后添加一个ViewContro ...

  4. ios 视图切换翻页效果

    本文写的是视图切换,涉及到的内容有 1.实现代码添加Navigation Bar  Toolbal: 2.实现在Navigation Bar和Toolbar上用代码添加Bar Button Item: ...

  5. [Xcode 实际操作]二、视图与手势-(3)UIView视图的基本操作

    目录:[Swift]Xcode实际操作 本文将实现视图的添加与删除,以及切换视图在父视图中的层次. import UIKit class ViewController: UIViewControlle ...

  6. pushViewController addSubview presentModalViewController视图切换

    1.pushViewController和popViewController来进行视图切换,首先要确保根视图是NavigationController,不然是不可以用的, pushViewContro ...

  7. UI3_视图切换

    // // ViewController.m // UI3_视图切换 // // Created by zhangxueming on 15/7/3. // Copyright (c) 2015年 z ...

  8. UI2_视图切换ViewController

    // // SubViewController.h // UI2_视图切换 // // Created by zhangxueming on 15/7/3. // Copyright (c) 2015 ...

  9. UI1_ViewController视图切换及Appdelegate

    // // ThirdViewController.h // UI1_ViewController视图切换及Appdelegate // // Created by zhangxueming on 1 ...

随机推荐

  1. 《Windows驱动开发技术详解》之驱动程序调用驱动程序——通过设备指针调用其他驱动程序

    本节介绍“手动”构造各个IRP,然后将IRP传递到相应驱动程序的派遣函数里. 获得设备指针 每个内核中的句柄都会和一个内核对象的指针联系起来.ZwCreateFile内核函数可以通过设备名打开设备句柄 ...

  2. selenium 百度登陆

    using System;using OpenQA.Selenium;using OpenQA.Selenium.Firefox;//引用命名空间using System.IO; using Syst ...

  3. Word试卷文档模型化解析存储到数据库

    最近在搞一套在线的考试系统,有许多人反映试题的新增比较麻烦(需要逐个输入),于是呼就整个了试卷批量导入了 poi实现word转html 模型化解析html html转Map数组 Map数组(数组的操作 ...

  4. java 正则

    ava - 正则表达式 - Pattern - Matcher 2013-08-21 14:35 3325人阅读 评论(0) 收藏 举报  分类: JavaSE(30)  版权声明:本文为博主原创文章 ...

  5. Struts2原理图

  6. openwrt makefile选项

    Package/conffiles (optional) 由该包安装的配置文件的列表,一行一个文件. BuildPackage宏 最重要的一个宏是 BuildPackage.它会在 Makefile ...

  7. LeetCode OJ 108. Convert Sorted Array to Binary Search Tree

    Given an array where elements are sorted in ascending order, convert it to a height balanced BST. 把一 ...

  8. 安装 svn

    rpm -qa subversion yum install subversion svnserve --version 创建仓库目录例如: mkdir /home/svn/game 创建项目 svn ...

  9. .Cannot create an NSPersistentStoreCoordinator with a nil model

    今天用coredata事,忽然遇到这个问题:找了一会终于发现问题所在,与大家分享一下 导致这个问题的原因是因为找不到.xcdatamodeld所致,不同的人可能遇到的问题不同 可能原因1: NSURL ...

  10. php过滤提交数据 防止sql注入攻击

    规则 1:绝不要信任外部数据或输入 关于 Web 应用程序安全性,必须认识到的第一件事是不应该信任外部数据.外部数据(outside data) 包括不是由程序员在 PHP 代码中直接输入的任何数据. ...