应用程序开始使用动画解除视图后,在没有动画的情况下关闭视图

时间:2014-03-03 22:42:56

标签: ios objective-c ipad

有没有办法取消动画取消视图,然后在没有动画的情况下关闭相同的视图?

所以这是它正在发生的事情: 在我的iPad应用程序中,我有一个根控制器,它显示设置视图控制器。无论是用户的演示/解雇,设置视图都会以动画显示/消失。

然而,有一种情况是用户被踢出应用程序并且应用程序应该显示登录视图。因此,如果rootViewContoller已经呈现了ViewController(就像上面的设置视图一样),我会执行以下操作:

   [rootViewController dismissViewControllerAnimated:NO completion:^{
   [rootViewController presentViewController:logInViewController animated:NO completion:NULL];
   }];

现在问题是一个罕见的情况,当用户在应用程序踢出用户之前解除设置视图控制器。当应用程序上面的代码,因为设置视图已经被解雇应用程序抛出警告

"Attempt to dismiss from view controller <UINavigationController:> while a presentation or dismiss is in progress!"

并且该代码不会运行,结果,之后不会显示登录视图。

我试过的一种方法就是等到动画解雇完毕并执行presentViewController:animated:completion:with delay(with any time frame)。这是有效的,但我不喜欢这种方法,因为“任意时间范围”不能保证一直工作(或者如果我做得太长,那么用户将不得不等待那段时间)。我也不喜欢使用NSInvocation的代码非常复杂。

所以我想知道是否有办法强制解除视图(没有动画)被动画解雇?

1 个答案:

答案 0 :(得分:0)

为登录视图使用单独的UIWindow,并将其设为关键窗口。完成后,您可以切换回另一个窗口,在这种情况下,“设置”屏幕仍然可见。通常当我使用应用程序时,如果我做某事,然后离开应用程序并回来,我希望“某些东西”仍然存在。我认为这正是那种用例。