Unbalancedcallstobegin/endappearancetransitionsforXXXX unbalanced下载


在iOS 5.0 中加入了x方法。让我们编程中加入子视图控制器(viewController)变的很简单。
但是,最近在使用中,却出现了,控制台,输出的警告信息:

Unbalanced callsto begin/end appearance transitions for .


一、错误原因
网上搜索了,一下,报这样的警告,是因为:过于快速切换子视图控制器,导致,前一个切换动作还没有完成,就进行了下一个切换!
果真时这样?
先看看,我出现该警告的环境吧。
1.加入子控制器

//加入子控制器

[selfaddChildViewController:self.saleInfoVC];

[selfaddChildViewController:self.recommendVC];

[selfaddChildViewController:self.msgInfoVC];

// 设置frame

self.saleInfoVC.view.frame=self.viewShow.bounds;

self.recommendVC.view.frame=self.viewShow.bounds;

self.msgInfoVC.view.frame=self.viewShow.bounds;

// 加入View

[self.viewShow addSubview:self.saleInfoVC.view];

[self.viewShow addSubview:self.recommendVC.view];

[self.viewShow addSubview:self.msgInfoVC.view];

_currentMainController=self.saleInfoVC;


2.控制,子控制器间的切换

-(void)changeViewByIndex:(int) paramIndex{

self.view.userInteractionEnabled = NO;

if (paramIndex==1) {

[selftransitionFromViewController:_currentMainController

toViewController:self.saleInfoVC

duration:0

options:UIViewAnimationOptionTransitionNone

animations:^{

// NOPS;

}

completion:^(BOOL finished){

[self.viewShow addSubview:self.saleInfoVC.view];

_currentMainController =self.saleInfoVC;

}

];

}else if(paramIndex==2){

[selftransitionFromViewController:_currentMainController

toViewController:self.recommendVC

duration:0

options:UIViewAnimationOptionTransitionNone

animations:^{

// NOPS;

}

completion:^(BOOL finished){

[self.viewShow addSubview:self.recommendVC.view];

_currentMainController =self.recommendVC;

}

];

}else if(paramIndex==3){

[selftransitionFromViewController:_currentMainController

toViewController:self.msgInfoVC

duration:0

options:UIViewAnimationOptionTransitionNone

animations:^{

// NOPS;

}

completion:^(BOOL finished){

[self.viewShow addSubview:self.msgInfoVC.view];

_currentMainController =self.msgInfoVC;

NSLog(@"%d",[self.msgInfoVC.view retainCount]);

}

];

}else{

//NOPS;

}

self.view.userInteractionEnabled = YES;

}


注意:该方法,写的冗余了,可以重构一下。
经过调试,我发现,只要不重复的切换3个视图,那么无论切换多快,都不会报以上,警告;当我连续切换某个(执行if(paramIndex==1)中的transitionFromViewController方法切换时)视图控制器时,就会报以上的警告。
可见,出现错误的原因是:当某个viewController已经别调用到前面时,就不应该再次调用transitionFromViewController方法,重复将其调用到前面。
二、解决方法
加个判断呗,首先判断要调入前边的viewController是否已经到了前面!是,则不在使用transitionFromViewController方法来重复调用。
加入判断:

if (paramIndex==1 &&[self.saleInfoVC isEqual:_currentMainController]) {

return;

}

if(paramIndex==2 &&[self.recommendVC isEqual:_currentMainController]) {

return;

}

if(paramIndex==3 &&[self.msgInfoVC isEqual:_currentMainController]) {

return;

}



希望对你有所帮助!









  

爱华网本文地址 » http://www.aihuau.com/a/25101010/39096.html

更多阅读

智能手机怎么截图 手机截图工具下载

智能手机怎么截图——简介 我们在操作手机的时候想要把屏幕上的画面保存下来,也许你会拿相机照张照片。其实不用那么麻烦,智能手机的截图软件有很多,我们完全可以通过这些软件完成屏幕截图的工作。下面介绍智能手机截图的方法。智能手

Xcode怎么下载 Xcode怎么安装 xcode模拟器安装app

Xcode怎么下载 Xcode怎么安装——简介Xcode 是苹果系统上的集成开发工具,可以为 Mac OS 和 iOS 系统开发新应用。这里苹果的 Mac OS 系统为例,介绍下如何下载安装 Xcode 的操作方法。Xcode怎么下载 Xcode怎么安装——工具/原料Xcode

qq微信电脑客户端怎么下载?如何使用 qq微信电脑客户端

qq微信电脑客户端怎么下载?如何使用——简介qq微信电脑客户端怎么下载?如何使用,微信电脑客户端怎么注册如何登录,qq微信网页版怎么登录?如何安装;现在使用手机微信客户端聊天已经不能满足小伙伴们的需求了,也想在电脑上能和QQ一样的操作和

搜狐视频怎么下载 下载搜狐视频

搜狐视频怎么下载——简介搜狐视频怎么下载?搜狐视频能下载吗?搜狐视频高清电影下载到电脑如何转换电视视频呢?这面将实例演示以分析搜狐视频高清电影下载过程。感兴趣的朋友不防跟着往下看吧! 搜狐视频怎么下载——工具/原料狸.窝网络

声明:《Unbalancedcallstobegin/endappearancetransitionsforXXXX unbalanced下载》为网友钱多多美瞳铺分享!如侵犯到您的合法权益请联系我们删除