处理IPhone多个view切换是我们常遇到的问题,接下来有个比较实用的方法:

而且还附有创建空项目,内存告急处理和动画效果的实现!

具体步骤:

1.创建一个空的项目,然后添加一个ViewController,勾选上with xib文件,点击到xib文件看看File's Owner属性是否是当前的ViewController,如果不是,手动填写一下,并将他的view属性拖向当前的view,view如果改成UIController,那么该view就具备事件

2.修改AppDelegate.h

@class DXWViewController;

@property (strong, nonatomic) DXWViewController *viewController;

3.修改AppDelegate.m

首先在dealloc中添加

[_viewController release];

接着是添加

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

self.viewController = [[[DXWViewController alloc] initWithNibName:@"DXWViewController" bundle:nil] autorelease];

self.window.rootViewController = self.viewController;

[self.window makeKeyAndVisible];

return YES;

}

上面是讲从0开始创建一个启动项目,下面是做一个多视图切换的功能

4.截下来是创建三个ViewController,分别是RedViewController(主view),YellowViewController,BlueViewController

主view下面是一个toolbar控件,其他两个view下面是在属性ButtonBar选择ToolBar实现

5.在主view中编码实现

ViewController.h:

#import <UIKit/UIKit.h>
#import "BlueViewController.h"
#import "YellowViewController.h"
@interface DXWViewController : UIViewController
@property(retain,nonatomic) BlueViewController *blueViewController;
@property(retain,nonatomic)YellowViewController *yellowViewController;
- (IBAction)blueClick:(id)sender;
- (IBAction)yellowClick:(id)sender;
- (IBAction)redClick:(id)sender;
- (IBAction)click:(id)sender;@end

ViewController.m:

#import "DXWViewController.h"@interface DXWViewController ()@end@implementation DXWViewController- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];if (self) {// Custom initialization}return self;
}- (void)viewDidLoad
{[super viewDidLoad];}
//如果内存警告,则调用这个方法,可以让你自己清掉一些不需要用的内存
- (void)didReceiveMemoryWarning
{[super didReceiveMemoryWarning];NSLog(@"内存告急");//如果内存警告则释放无用资源if (self.blueViewController.view.superview != nil) {[self.yellowViewController.view removeFromSuperview];}else if(self.yellowViewController.view.superview != nil){[self.blueViewController.view removeFromSuperview];}
}
- (IBAction)click:(id)sender {// NSLog(@"hello");[UIView beginAnimations:@"anim" context:nil];//一个动画的持续时间[UIView setAnimationDuration:1.5f];//一个动画的运动随时间快慢曲线[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];//动画方式[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];//如果当前view的父view存在if (self.blueViewController.view.superview != nil) {//如果没创建则创建if (self.yellowViewController == nil) {self.yellowViewController = [[[YellowViewController alloc] initWithNibName:@"YellowViewController" bundle:nil] autorelease];}[self.blueViewController.view removeFromSuperview];[self.view insertSubview:self.yellowViewController.view atIndex:10];}else if (self.yellowViewController.view.superview != nil) {[UIView beginAnimations:@"anim" context:nil];//一个动画的持续时间[UIView setAnimationDuration:2.5f];//一个动画的运动随时间快慢曲线[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];//动画方式[UIView setAnimationTransition:UIViewAnimationOptionTransitionCurlUp forView:self.view cache:YES];//如果没创建则创建if (self.blueViewController == nil) {self.blueViewController = [[[BlueViewController alloc] initWithNibName:@"BlueViewController" bundle:nil] autorelease];}[self.yellowViewController.view removeFromSuperview];[self.view insertSubview:self.blueViewController.view atIndex:10];[UIView commitAnimations];}//动画效果启动[UIView commitAnimations];
}
- (IBAction)blueClick:(id)sender {NSLog(@"blue");//[self.blueViewController.view removeFromSuperview];self.blueViewController = [[[BlueViewController alloc] initWithNibName:@"BlueViewController" bundle:nil] autorelease];[self.view insertSubview:self.blueViewController.view atIndex:10];
}- (IBAction)yellowClick:(id)sender {NSLog(@"yellow");//加上这句就可以红黄蓝任意点击//[self.yellowViewController.view removeFromSuperview];self.yellowViewController = [[[BlueViewController alloc] initWithNibName:@"YellowViewController" bundle:nil] autorelease];[self.view insertSubview:self.yellowViewController.view atIndex:10];
}
//主视图控制器
- (IBAction)redClick:(id)sender {NSLog(@"red");[self.yellowViewController.view removeFromSuperview];[self.blueViewController.view removeFromSuperview];
}@end

旋转效果

IPhone多视图切换相关推荐

  1. IPhone 视图切换的的2种方法

    IPhone中视图切换,网上常见的方法都是用viewcontrol,在viewcontrol中插入不同的视图实现,见下面的代码 [self.view insertSubview:self.mainvi ...

  2. StoryBoard 视图切换和传值

    一 于StoryBoard相关的类.方法和属性 1 UIStoryboard // 根据StoryBoard名字获取StoryBoard+ (UIStoryboard *)storyboardWith ...

  3. 关于在VS2005环境下无法从源视图切换到设计视图的解决方案

    今天在使用VS2005 Coding时,突然出现无法从源视图切换到设计视图的问题,这个急死人了,今天的任务可就完成不了啊.刚开始以为是源代码有语法错误,排查了非常久,没发现语法错误.这是怎么回事呢?试 ...

  4. tableau必知必会之使用参数操作在同一视图切换指标

    前言 我们之前分享过两个"在同一视图切换图表"的例子:如何在同一视图中切换不同图表和使用计算实现同一视图切换相同分析维度的图表. 前者利用容器的方式,可以实现图表在视图物理位置的切 ...

  5. Oracle VM VirtualBox下各种视图切换

    在一次操作变换VirtualBox下视图时,莫名菜单项全不见了,后通过热键的选择方式更改回来了,实属庆幸啊,废话不多说,在这里说一下VirtualBox下视图切换的快捷键: 里面有个Host键,注意这 ...

  6. iOS开发 剖析网易新闻标签栏视图切换(addChildViewController属性介绍)

    iOS开发 剖析网易新闻标签栏视图切换(addChildViewController属性介绍) 本来仅仅是打算介绍一下addChildViewController这种方法的,正好今天朋友去换工作面试问 ...

  7. Visual Studio 2008在设计视图和代码视图切换的快捷键F7

    使用VS2008的快捷键F7可以在设计器视图和代码视图进行切换,相当于"视图"菜单 ->"代码"(或者"设计器").在设计器视图可以按 ...

  8. MFC视图切换大全总结

    单纯视图之间的切换 单文档多视图切换是我在学习MFC中遇到的一个老大难问题,在今天总算是一一破解了.我觉得视图切换分为三个等级,第一是在未切分窗格的情况下切换视图类:第二是在分割窗格的一个窗格内实行视 ...

  9. 用Angular制作单页应用视图切换动画

    视图,动画 单页应用(Single Page Web Application)往往有一个基本的要点,那就是把多个视图集成到一个网页内,然后去控制这些视图的显示和隐藏.此外,视图的切换动作几乎都会引入动 ...

最新文章

  1. 关于c#中 的动态加载程序集
  2. 数据挖掘讲座:我所知道的一点Data Mining
  3. python 画系统关联图_Python基于pyecharts实现关联图绘制
  4. oracle 批量杀死 死锁进程
  5. [Python] 正确复制列表的方法
  6. Facebook的图片搜索技术揭秘
  7. 计算机网络自顶向下方法 笔记 第一章:计算机网络和因特网
  8. python关键词共现图谱_Python简单实战项目:《冰与火之歌1-5》角色关系图谱构建——人物关系可视化...
  9. 以ASK调制解调为例观察采样与成型滤波的MATLAB仿真
  10. 人工势场法脱离极小值点
  11. 常用音频接口简介(PDM/PCM/IIS/SLIMBUS)
  12. 电信版行货黑莓9630修复历险记
  13. IPHONE屏幕大小,分辨率解析
  14. ArcGIS教程:山地风景区景观规划中的可视性分析
  15. 人工在线客服不在线怎么办
  16. 处方常用拉丁词缩写与中文对照表
  17. 俄罗斯方块游戏开发 ——图形化编程java swing 项目
  18. 动态规划(Dynamic Programming)
  19. STM32驱动直流电机
  20. 算法设计与分析——位图(BitMap)

热门文章

  1. Android——基本组件-2
  2. mysql双主复制模式_mysql复制模式第二部分-----双主模式
  3. 3d建模网上学习靠谱吗?学3d建模哪个大学好?
  4. 03 graphx 从 SSSP 来看 pregel
  5. Pandownload 开发者被抓了,但是其背后,百度难道不需要反思吗?(转载)
  6. offer来了java面试百度云版,精心整理
  7. 全球顶级手游开发商向数据极客们发出赛事邀请,用数据分析玩家行为,赢取十万大奖!...
  8. 蓝底证件照rgb值是多少?一个方法帮你搞定
  9. python游戏功能_python 游戏(龙的国度)
  10. Cobaltstrike系列教程(十一)提权与横向移动