gpt4 book ai didi

ios - 如何在任何时候(甚至在转换期间)或在可以安全地关闭 View Controller 时关闭 View Controller ?

转载 作者:可可西里 更新时间:2023-11-01 04:59:13 25 4
gpt4 key购买 nike

我有一个连接到服务器的 iOS 应用程序。如果我们断开连接,我希望能够关闭顶 View Controller 以返回到“连接到服务器” View Controller 。问题是断开连接随时可能发生,包括在 View Controller 之间的转换期间。

View Controller 层次结构是这样的:

  1. ConnectingToServerViewController
  2. SignInViewController
  3. MainAppViewController
  4. 其他 View Controller

当检测到断开连接时,我希望 View 层次结构折叠回:

  1. ConnectingToServerViewController

因此,当检测到断开连接时,将在 ConnectingToServerViewController 上调用此方法以消除它呈现的任何内容并返回尝试连接到服务器:

- (void)restartSession
{
if (self.presentedViewController) {
[self dismissViewControllerAnimated:NO completion:nil];
}
}

但是,如果我在 View 转换发生时尝试关闭,我会收到类似

的错误
*** 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>

第一个会使应用程序崩溃,第二个不会关闭任何内容并继续显示当前呈现的 View Controller 。

想法:

  1. 延迟将不起作用,因为我们不知道何时开始延迟
  2. 有没有一种方法可以跟踪 View 转换何时完成?
  3. 是否所有 View Controller 都应覆盖 willAppear、didAppear 并在可以安全关闭时提醒应用?
  4. 也许我不应该关闭,而应该设置一个新的 Root View Controller ?
  5. 我已确保所有覆盖的 view(will|did)(dis)?appear 方法都调用适当的 super 方法。
  6. 任何要求所有 View Controller 重写 view(did|will)appear 方法来跟踪状态的解决方案听起来好像如果我们忘记为新 View Controller 设置基类可能会导致问题。

最佳答案

做这样的事情。试试这个,

UIViewController *controller = self.presentingViewController; //THIS LINE IS IMP
[self dismissViewControllerAnimated:YES
completion:^{
[controller presentViewController:adminViewController animated:YES completion:nil];
adminViewController.view.superview.frame = CGRectMake(1024/2 - 400, 768/2 - 280, 800 , 560);//it's important to do this after
[adminViewController release];
}];

关于ios - 如何在任何时候(甚至在转换期间)或在可以安全地关闭 View Controller 时关闭 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17801606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com