- 浏览: 569710 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
JYY282:
[i][/i]
Ecshop与Shopex的比较 -
qq247890212:
我也遇见这问题了,真诡异。重新下载个猫换了就好了。 太浪费时间 ...
诡异:ClassNotFoundException: org.springframework.web.filter.CharacterEncoding
From: http://www.cocoachina.com/newbie/basic/2012/0112/3870.html
在iOS5中,ViewController中新添加了下面几个方法:
addChildViewController:
removeFromParentViewController
transitionFromViewController:toViewController:duration:options:animations:completion:
willMoveToParentViewController:
didMoveToParentViewController:
下面详细介绍一下addChildViewController,一个ViewController可以添加多个子ViewController, 但是这些子ViewController只有一个是显示到父视图中的,可以通过 transitionFromViewController:toViewController:duration:options:animations:completion: 这个方法转换显示的子视图。同时加入相应的动画。下面以一个例子来说明,最后实现的效果:
下面详细介绍一下上述效果的实现:
创建项目,changeViewController。
添加相应的viewController,MainViewController、FirstViewController、SecondViewController、ThirdViewController。如下图:
3.把MainViewController添加到window中。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
MainViewController *mainViewController=[[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
self.window.rootViewController=mainViewController;
[self.window makeKeyAndVisible];
return YES;
}
4.在MainViewController中添加三个按钮,并且连接onClickbutton方法。
5.在MainViewController中添加三个子controller
#pragma mark – View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
FirstViewController *firstViewController=[[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
[self addChildViewController:firstViewController];
SecondViewController *secondViewController=[[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
[self addChildViewController:secondViewController];
ThirdViewController *thirdViewController=[[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil];
[self addChildViewController:thirdViewController];
[contentView addSubview:thirdViewController.view];
currentViewController=thirdViewController;
}
其中要把其中的一个子controller的view添加到根视图中,这样才能显示出相应的视图。
6.点击按钮,切换视图。
-(IBAction)onClickbutton:(id)sender
{
FirstViewController *firstViewController=[self.childViewControllers objectAtIndex:0];
ThirdViewController *thirdViewController=[self.childViewControllers objectAtIndex:2];
SecondViewController *secondViewController=[self.childViewControllers objectAtIndex:1];
if ((currentViewController==firstViewController&&[sender
tag]==1)||(currentViewController==secondViewController&&[sender
tag]==2) ||(currentViewController==thirdViewController&&[sender
tag]==3) ) {
return;
}
UIViewController *oldViewController=currentViewController;
switch ([sender tag]) {
case 1:
{
NSLog(@"留言及回复");
[self transitionFromViewController:currentViewController
toViewController:firstViewController duration:4
options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{
} completion:^(BOOL finished) {
if (finished) {
currentViewController=firstViewController;
}else{
currentViewController=oldViewController;
}
}];
}
break;
case 2:
{
NSLog(@"生日提醒");
[self transitionFromViewController:currentViewController
toViewController:secondViewController duration:1
options:UIViewAnimationOptionTransitionFlipFromTop animations:^{
} completion:^(BOOL finished) {
if (finished) {
currentViewController=secondViewController;
}else{
currentViewController=oldViewController;
}
}];
}
break;
case 3:
{
NSLog(@"好友申请");
[self transitionFromViewController:currentViewController
toViewController:thirdViewController duration:1
options:UIViewAnimationOptionTransitionFlipFromBottom animations:^{
} completion:^(BOOL finished) {
if (finished) {
currentViewController=thirdViewController;
}else{
currentViewController=oldViewController;
}
}];
}
break;
default:
break;
}
}
其中我把按钮设置成不同的tag了。
这时候点击按钮,就可以切换子视图了。
这样写的好处:
多个UIViewController之间切换可以添加动画
当内存警告的时候,可以把当前不是激活状态的ViewController内存释放。
可以把代码更好分开
发表评论
-
Objective-C 与 C++ 的异同
2013-04-02 12:03 1358http://www.cnblogs.com/y041039 ... -
Cocos2D-X是全球知名的开源跨平台手机游戏引擎
2013-01-22 10:05 2710http://www.oschina.net/p/cocos ... -
iOS Keyboard 键盘高度变化 自适应
2013-01-15 15:43 3219[[NSNotificationCenter default ... -
iOS使用自定义字体
2012-11-27 12:11 12075From: http://blog.csdn.net/csy1 ... -
4 款类似 Facebook/Path 切换效果的 iOS 组件
2012-11-27 12:03 2090From: http://blog.csdn.net/lia ... -
Path 2.0的UI界面设计详细介绍
2012-11-27 11:56 1426如Path的创始人Dave Morin ... -
史上最全的App Store邮箱列表
2012-11-27 11:51 1219From: http://roybaby.blog.51cto ... -
iOS从info.plist 获取项目的名称及版本号
2012-11-16 10:54 1575From: http://blog.sina.com.cn/s ... -
MapKit annotation drag and drop with callout info update
2012-10-13 10:38 2362http://hollowout.blogspot ... -
NSArray 或NSDictionary 调用writeToFile方法失败原因
2012-08-31 10:03 4421NSArray 或NSDictionary 调用writeTo ... -
如何让IOS应用从容地崩溃
2012-08-30 15:25 1570From: http://www.cocoachina.com ... -
iOS中判断设备系统版本
2012-08-29 17:17 31668在iOS开发中,经常要考虑系统的向下兼容,如果使用 ... -
iOS 汉字转拼音
2012-08-21 16:42 1423From: http://www.cnblogs.com/v2 ... -
iOS模拟器截图工具
2012-08-17 16:35 1583From: http://magicalboy.com/ios ... -
XCode下的iOS单元测试
2012-08-10 17:47 1120From: http://mobile.51cto.com/ ... -
AFNetworking
2012-08-08 10:54 4620AFNetworking on github: https:/ ... -
Wrapping Conventions
2012-08-01 15:54 779Wrapping Conventions ... -
Core Animation如何使显式动画结束时的值直接作用Layer
2012-08-01 14:51 3746(1)使用隐式动画会直接改变layer的属性值,如: ima ... -
How To Debug Memory Leaks with XCode and Instruments Tutoria
2012-07-31 16:30 1018From: http://www.raywenderlich. ... -
Using Properties in Objective-C Tutorial
2012-07-31 16:27 878From: http://www.raywenderlich. ...
相关推荐
ios5中UIViewController新使用方法源码 http://mobile.51cto.com/iphone-313146.htm
UIviewController的ios5.0以后的新方法的测试demo;
通过故事板兼容的自定义转场,在 UINavigationController 堆栈中的 UIViewController 之间交替的简单方法。 (也与导航控制器堆栈外的视图控制器兼容) 主要基于提供的。 用法 代码中的用法与任何其他 segue 相同...
Scene 一个视图相当于UIViewController,提供了快速集成网络请求和下拉刷新上拉加载的方法。 SceneTableView 一个TableView,配合scene提供了集成下拉刷新上拉加载的方法 SceneCollectionView 一个...
在iOS的最新版本中绘制PolyLines的方法已更改,因此从iOS 7开始不推荐使用较旧的MKOverlayView方法,现在首选使用新的MKOverlayRenderer技术(并且在使用Swift时是必需的)。 让我们通过绘制一个PolyLine叠加层的...
iOS 11 中,官方提供了一种新的布局方法——通过 layout margins 进行布局。官方文档 Positioning Content Within Layout Margins 称,使用这种布局可以保证各个 content 之间不会相互覆盖。 总的来说,layout ...
自定义导航的动画,实现导航下沉的效果.使用方法:创建导航继承于WHNavigationController就可以了,然后再自定义一个UIViewController,在self.view上添加一个64高度的导航条.
从android转过来iOS的,对于页面的跳转,找了很多资料,现在记录一下页面跳转的方法。 1.用navigationController 2.直接跳(刚刚在网上找到的,不太熟,有错莫怪) 1.建一个RootViewController,在delegate.h 代码...
但是需要在每个UIWindow,UIViewController,UIView里面增加下面的这个方法 -(void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection 在这个方法里去判断和更改当前界面所有元素的颜色 我专门...
###第1步:创建导航控制器克隆此项目(或在Xcode中创建新的单视图控制器) 创建一个名为ScoreViewController的UIViewController 在AppDelegate中,didFinishLaunching方法初始化了一个以ScoreViewController实例为...
一般都只能通过子类化UINavigationController或者自己编写动画代码去覆盖相应的方法,现在iOS7为开发者带来了福音,苹果公司引入了大量新API,给予了开发者很高的自由度,在处理由UIViewController管理的UIView动画...
☆☆ 如何导入使用框架方法 ☆☆ 可以打开 https://github.com/MJCIOS/MJCSegmentInterface 将项目下载下来,将MJCSlideInterface文件夹放入自己的项目中 项目已支持pod导入,pod 'MJCSegmentInterface',如果没法导入,...
简单模仿最新版QQ和知乎的侧滑抽屉效果,代码简单,适合新手下载学习。 Demo封装了两个控制器...- (id)initWithLeftViewController:(UIViewController *)leftVC MainViewController:(UIViewController *)mainVC;
在 AppDelegate didFinishLaunching 方法中,使用 recipeViewController 实例作为 rootViewController 初始化一个 UINavigationController 使 navigationController 成为窗口的 rootViewController。 第 2 步:在...
要求 Xcode 9.0以上 iOS 9.0或更高版本 安装 可可豆 安装 将此Podfile添加到您的Podfile target 'Example' do ...只要您使用UIViewController子类,您都将获得默认一致性以及reloadEmptyState方法。 // No subcl
☆☆ 如何导入使用框架方法 ☆☆ 可以打开 https://github.com/MJCIOS/MJCSegmentInterface 将项目下载下来,将MJCSlideInterface文件夹放入自己的项目中 项目已支持pod导入,pod 'MJCSegmentInterface',如果没法...
AGBlurTransition 自定义过渡委托,用于在新的iOS7自定义过渡API中使用框架中的模糊背景呈现模式视图。为什么要使用AGBlurTransition? 有许多视图控制器和模糊效果的实现。 但是,它们都需要更改代码以适应其API的...
食谱应用一个iOS应用程序,显示来自Recipe.com的一些最喜欢的食谱##第3课:TableView数据源###第1步:创建导航控制器克隆此项目(或在Xcode中创建新的单视图控制器) 创建一个名为RecipeViewController的...
要启用该库,您必须在Info.plist文件中添加一个新条目。 NSLocationAlwaysUsageDescription = "The message to be shown"; 用法 将控制器设置为 @interface JFEViewController : UIViewController 然后你可以...