Nic*_*eld 5 objective-c uiviewcontroller uikit ios
我有一个与服务器连接的iOS应用程序.如果我们断开连接,我希望能够关闭顶视图控制器以返回到"连接到服务器"视图控制器.问题是可能在任何时候发生断开连接,包括在视图控制器之间的转换期间.
视图控制器层次结构如下:
ConnectingToServerViewControllerSignInViewControllerMainAppViewController检测到断开连接时,我希望视图层次结构折叠回:
ConnectingToServerViewController因此,当检测到断开连接时,调用此方法ConnectingToServerViewController以解除它所呈现的任何内容并返回尝试连接到服务器:
- (void)restartSession
{
if (self.presentedViewController) {
[self dismissViewControllerAnimated:NO completion:nil];
}
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我在视图转换发生时尝试关闭,我会收到诸如此类的错误
*** Assertion failure in -[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:], /SourceCache/UIKit/UIKit-2380.17/UIWindowController.m:211
attempt to dismiss modal view controller whose view does not currently appear. self = <YYYYYViewController: 0x2089c8a0> modalViewController = <XXXXXViewController: 0x208e6610>
attempt to dismiss modal view controller whose view does not currently appear. self = <WWWWWWViewController: 0x1fd9e990> modalViewController = <YYYYYViewController: 0x2089c8a0>
Run Code Online (Sandbox Code Playgroud)
第一个将崩溃应用程序,第二个将不会解雇任何东西,并继续显示当前显示的视图控制器.
思考:
当视图控制器当前不在屏幕上时,您似乎试图关闭它。要检查它是否在屏幕上,您可以使用:
if (self.presentedViewController.view.window)
{
[self dismissViewControllerAnimated:NO completion:nil];
}
else
{
self.presentedViewController = nil;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4274 次 |
| 最近记录: |