Iphone 奇怪的警告解除模态视图控制器
我在做iOS 6。 我的应用程序有一个带有嵌入式CustomViewController的标准导航控制器。 在该控制器中,我创建了如下模式视图:Iphone 奇怪的警告解除模态视图控制器,iphone,ios,cocoa-touch,ios5,ios6,Iphone,Ios,Cocoa Touch,Ios5,Ios6,我在做iOS 6。 我的应用程序有一个带有嵌入式CustomViewController的标准导航控制器。 在该控制器中,我创建了如下模式视图: -(IBAction)presentModalList:(id)sender { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; StationsListViewController *list = [s
-(IBAction)presentModalList:(id)sender {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
StationsListViewController *list = [storyboard instantiateViewControllerWithIdentifier:@"StationsListViewController"];
[list setStationsData: [self.stationsData allValues]];
[self presentModalViewController:list animated:YES];
}
模态控制器显示完美,但忽略会生成警告。
此控制器中的解除方法为:
-(IBAction)backToMap
{
[self dismissModalViewControllerAnimated:YES];
}
生成的警告为警告:
当演示或取消正在进行时,尝试从视图控制器取消谢谢我意识到这是一个迟来的答案,但这可能会帮助其他人寻找解决方案,以下是我所做的:
-(IBAction)backToMap
{
if (![[self modalViewController] isBeingDismissed])
[self dismissModalViewControllerAnimated:YES];
}
对我来说,我发现代码行被多次调用,我不知道为什么这是最简单的修复方法。感谢JDx让我走上了正确的道路。我对其进行了调整以形成此解决方案,该解决方案将在不使用iOS 6中不推荐使用的功能的情况下删除警告:
-(IBAction)backToMap
{
if (![self.presentedViewController isBeingDismissed]) {
[self dismissViewControllerAnimated:YES completion:^{}];
}
}
我发现这种方法不可靠——比如说,五分之一的情况下,我仍然会看到错误 我的解决方案是使用completion块设置一个标志来控制是否可以安全地关闭视图,这样您就不需要检查视图是否正在关闭
-(IBAction)presentModalView:(id)sender {
:
self.canDismiss = NO;
[self presentViewController:aVC animated:YES completion:^{
self.canDismiss = YES;
}];
:
}
在发生解除的代码位中,只需检查标志:
-(void)dismisser {
:
if (self.canDismiss) {
[self dismissViewControllerAnimated:YES completion:nil];
}
:
}
嘿,普雷斯托,别再犯错误了 针对iOS6,这对我来说很有用:
if (![self.presentedViewController isBeingDismissed])
[self.presentedViewController dismissViewControllerAnimated:YES
completion:nil];
完成Disclose方法后,您可以按如下方式执行任何操作:
-(IBAction)backToMap
{
[self dismissViewControllerAnimated:YES
completion:^{
//Do something here
}];
}
我也遇到了这个问题。可能发生的情况是,您的
dimissModalViewControllerAnimated:
调用可能放置在回调(iAction)方法中,该方法(直接或间接)通过点击模态视图上的取消按钮触发,该按钮已处理解除模态视图的操作。因此,此解除ModalViewController激活:
可能是重复的,可以删除。我有类似的问题,但它是由显示的viewController引起的,然后几乎立即解除(因此解除是在当前动画期间)。因此,我必须检查正在显示
。这很奇怪。我想@smileyborg有什么发现。但我不明白为什么它看起来是自动被解雇的?我所做的只是一个放松的动作,我不需要直接忽略它-